从同一个dockerfile提供两个docker镜像

我正在设置一个自动生成,我想从中生成2张图片。

用例是build立和发布一个图书馆: – 一个图像与依赖关系,将被重新用于在Travis上构build和testing – 一个图像提供构build的软件库

基本上,我需要能够推动一个特定的点(build设之前)和稍后(build设和安装后)的集装箱形象。

这可能吗? 我没有发现任何相关的Dockerfile文档。

你可以使用Docker Multi Stage构build。 有两个Docker文件

Dockerfile

FROM alpine RUN apk update && apk add gcc RUN echo "This is a test" > /tmp/builtfile 

Dockerfile-PROD

 FROM myapp:testing as source FROM alpine COPY --from=source /tmp/builtfile /tmp/builtfile RUN cat /tmp/builtfile 

build.sh

 docker build -t myapp:testing . docker build -t myapp:production -f Dockerfile-prod . 

所以要解释一下,我们所做的就是先用依赖关系构build图像。 然后在我们的第二个Dockerfile-prod ,我们只包含了我们之前构build映像的FROM。 并将构build的文件复制到生产映像。

从我的构build截断输出

 vagrant@vagrant:~/so$ ./build.sh Step 1/3 : FROM alpine Step 2/3 : RUN apk update && apk add gcc Step 3/3 : RUN echo "This is a test" > /tmp/builtfile Successfully tagged myapp:testing Step 1/4 : FROM myapp:testing as source Step 2/4 : FROM alpine Step 3/4 : COPY --from=source /tmp/builtfile /tmp/builtfile Step 4/4 : RUN cat /tmp/builtfile This is a test Successfully tagged myapp:production 

有关更多信息,请参阅https://docs.docker.com/engine/userguide/eng-image/multistage-build/#name-your-build-stages