【发布时间】:2019-09-20 12:26:12
【问题描述】:
我有 2 个不同的 docker 文件(生产和测试环境)。我想用这 2 个 dockerfile 构建一个单一的多级 docker 文件。
第一个dockerfile如下:
FROM wildfly:17.0.0
USER jboss
RUN mkdir /opt/wildfly/install && mkdir /opt/wildfly/install/config
COPY --chown=jboss:jboss install /opt/wildfly/install
COPY --chown=jboss:jboss install.sh /opt/wildfly/bin
RUN mkdir -p $JBOSS_HOME/standalone/data/datastorage
CMD ["/opt/wildfly/bin/install.sh"]
第二个dockerfile如下:
FROM wildfly:17.0.0
USER jboss
RUN mkdir /opt/wildfly/install && mkdir /opt/wildfly/install/config
COPY --chown=jboss:jboss ./install /opt/wildfly/install
COPY --chown=jboss:jboss install.sh /opt/wildfly/bin
RUN rm /opt/wildfly/install/wildfly-scripts/Setup.cli
RUN mv /opt/wildfly/install/wildfly-scripts/SetupforTest.cli /opt/wildfly/install/wildfly-scripts/Setup.cli
RUN rm /opt/wildfly/install/wildfly-scripts/Properties.properties
RUN mv /opt/wildfly/install/wildfly-scripts/Properties-test.properties /opt/wildfly/install/wildfly-scripts/Properties.properties
RUN mkdir -p $JBOSS_HOME/standalone/data/datastorage
CMD ["/opt/wildfly/bin/install.sh"]
问题如何为这两个 docker 文件创建一个多级 docker 文件?
提前致谢。
【问题讨论】:
-
您希望
docker build的输出是什么?第二个似乎是第一个的超集,通常一个多级 Dockerfile 最终只创建一个图像。 (考虑使用docker run -v在运行时注入备用配置文件,而不是为每个环境构建不同的映像。) -
@DavidMaze .... 当然 docker build 的输出是想要成功构建的图像,这与我的 docker run 无关。只是我想制作一个多阶段文件。
标签: docker docker-compose dockerfile devops docker-machine