Docker构建工具使用超详细全面教程(2)

stage之间交互的是文件,故COPY 命令需要扩展,通过--from=<name> 来指定需要从上方的哪个"stage" 拷贝文件, 其完整命令格式如下:

COPY --from=<name|index> <src>... <dest> # 注意--from 是可选的,当上层的stage没有名字时可以按照index(从0开始)的顺序引用,eg. --from=0

值得一提的是,默认情况下使用docker build 命令构建一个包含多个stage的dockerfile时,最终的产物是最下方的一个stage 所产生的镜像。

当然,如果出于调试原因或其他需求,docker也是支持构建到指定的stage的,使用 --target builder 就可以只构建builder镜像。

docker build -t zhouzhipeng/builder --target builder . 最后一步

到目前为止,我们已经有了一个能够一键构建的Dockerfile 文件,接下来就只差让它能够自动构建了!

你可以用你熟悉的jenkins 结合github的webhook来实现提交一次代码,就执行一次docker build命令。

当然,我推荐个人体验的话就用官方的docker hub 吧,因为这样你构建的镜像还可以与他人共享。

具体的用Docker hub 的 automated build 功能就不详细说明了, 下面用一张gif图快速演示下,感兴趣的朋友可以自行去探索下。

总结

Multi-Stage Build 这一特性非常适合做构建管道流,对于那些依赖环境复杂、流程也复杂的应用来说最合适不过了。

可以clone下上面的源码试下哦: https://github.com/zhouzhipeng/docker-multi-stage-demo

by zhouzhipeng from https://blog.zhouzhipeng.com/dockerfile-auto-ci-tool.html
本文可全文转载,但需要保留原作者和出处。 参考文献 https://docs.docker.com/v17.09/engine/userguide/eng-image/multistage-build/

https://blog.alexellis.io/mutli-stage-docker-builds/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23a6b44f9ae1b7371d280320cf4ac3b7.html