加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

程序员如何编写优雅的Dockerfile

发布时间:2019-04-20 22:53:02 所属栏目:教程 来源:王聪
导读:Kubernetes要从容器化开始,而容器又需要从Dockerfile开始,本文将介绍如何写出一个优雅的Dockerfile文件。 文章主要内容包括: Docker容器 Dockerfile 使用多阶构建 感谢公司提供大量机器资源及时间让我们可以实践,感谢在此专题上不断实践的部分项目及人

完成多阶段构建我们只需要在Dockerfile中多次使用FORM声明,每次FROM指令可以使用不同的基础镜像,并且每次FROM指令都会开始新的构建,我们可以选择将一个阶段的构建结果复制到另一个阶段,在最终的镜像中只会留下最后一次构建的结果,这样就可以很容易地解决前面提到的问题,并且只需要编写一个Dockerfile文件。这里值得注意的是:需要确保Docker的版本在17.05及以上。下面我们来说说具体操作。

在Dockerfile里可以使用as来为某一阶段取一个别名”build-env”:

  1. FROM golang:1.11.2-alpine3.8 AS build-env 
  1. COPY –from=build-env /go/bin/hello /usr/bin/hello  

看一个简单的例子:

  1. FROM golang:1.11.4-alpine3.8 AS build-env 
  2.   
  3. ENV GO111MODULE=off 
  4. ENV GO15VENDOREXPERIMENT=1 
  5. ENV GITPATH=github.com/lattecake/hello 
  6. RUN mkdir -p /go/src/${GITPATH} 
  7. COPY ./ /go/src/${GITPATH} 
  8. RUN cd /go/src/${GITPATH} && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install -v 
  9.   
  10. FROM alpine:latest 
  11. ENV apk –no-cache add ca-certificates 
  12. COPY --from=build-env /go/bin/hello /root/hello 
  13. WORKDIR /root 
  14. CMD ["/root/hello"] 

执行docker build -t –rm hello3 .后再执行docker images ,然后我们来看镜像的大小:

多阶构建给我们带来很多便利,最大的优势是在保证运行镜像足够小的情况下还减轻了Dockerfile的维护负担,因此我们极力推荐使用多阶构建来将你的代码打包成Docker 镜像。

【本文是51CTO专栏机构宜信技术学院的原创文章,微信公众号“宜信技术学院( id: CE_TECH)”】

戳这里,看该作者更多好文

【编辑推荐】

  1. 为什么国内程序员996.ICU,而美国程序员却可以轻松"养老"?
  2. 容器赋能AI-人工智能在360私有云容器服务上的实践
  3. 程序员的宿命是怎样的
  4. 谷歌程序员有哪些高效的编程习惯?
  5. 刚刚,又有一位程序员倒下了......
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读