考虑到这些,我想构建以下
FROM fat-base as build
RUN setup unit test frameworks
RUN setup integration test frameworks
RUN setup functional test frameworks
RUN setup all heavy lifting stuff
CMD test
FROM slim-base
COPY --from=build /runtime/binary /bin/binary
ENTRYPOINT /bin/binary
Dockerfile.test
。但是,我想维护一个包含所有阶段的Dockerfile。这是运行
的要求docker build -t my-binary .
docker run -ti my-binary[0] unit
docker run -ti my-binary[0] integration --all
docker run -ti my-binary[0] functional --only-label=container
答案 0 :(得分:3)
正如this page of the doc中所述,您可以使用--target
的{{1}}选项来创建与构建的中间阶段相对应的图像。
使用docker build
,这相当于以下命令:
Dockerfile
请注意,我在前面的最后三个命令中添加了docker build --target build -t my-binary-test .
docker build -t my-binary .
docker run -ti my-binary-test # run "test" as specified by "CMD test"
docker run -ti my-binary-test test unit
docker run -ti my-binary-test test integration --all
docker run -ti my-binary-test test functional --only-label=container
程序名称,因为test
阶段的最后一条指令CMD test
实际上将被命令行中给出的所有参数覆盖。为了更好地了解build
和CMD
指令的语义,我建议您阅读that section of the Dockerfile reference
。
此外,您可能希望使用ENTRYPOINT
的{{1}}选项,以便在退出时自动删除已创建的容器。