问题:Override FROM image's ENV in Dockerfile

来自下图:https://registry.hub.docker.com/u/cloudesire/activemq/dockerfile/

如果我想覆盖我的子 docker 文件中的 ACTIVEMQ_VERSION 环境变量,我认为我可以执行以下操作:

FROM cloudesire/activemq:latest
MAINTAINER abc <abc@xyz.co.uk>
ENV ACTIVEMQ_VERSION 5.9.1
ADD ./src/main/resources/* /opt/activemq/conf/

但是,这似乎不起作用。诚然,我是 Docker 新手,显然误解了一些东西。请有人解释为什么这不起作用,以及我如何/如果我能以另一种方式实现它?

解答

那是行不通的。ACTIVEMQ_VERSION已被cloudesire/activemq:latest镜像构建用于填充其镜像层。所有5.11.1版本的ActiveMQ安装文件都已经解压到对应的目录下。

在您的Dockerfile中,您只能在已经在那里构建的内容之上构建并添加您的文件。您自己的Dockerfile构建将不会重新运行在其Dockerfile中描述的构建说明。

如果你需要拥有自己的基于 5.9.1 版本的cloudesire/activemq镜像,你需要克隆他们的Dockerfile,在那里调整版本并在本地构建它。所以你可以将你的其他Dockerfile建立在它的基础上。

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐