
一般通用的在Docker中编译Golang应用的方法需要2个Dockerfile——一个用于平台编译,另一个用于打包第一个镜像中编译的不包含工具的结果。这个叫编译模式。
自从Dockerv17.05版本后可以通过单个Dockerfile文件来使用多场景构建。
开始一个”Hello World”应用:
package mainimport "fmt"func main() { fmt.Println("Hello World!")}单个Dockerfile
在多场景构建中,单个Dockerfile允许多个FROM指令,并且最终构建的镜像来源于Dockerfile中最后一个FROM指令。
copY -from=0将获取来源于之前场景中的app文件并复制到workdir。这将复制最基本的来源之前场景中创建编译的go的二进制文件。
FROM golang:1.8.1workdir /go/src/test/copY main.go .RUN GOOS=linux go build -o app .FROM alpine:latestRUN apk --no-cache add ca-certificatesworkdir /root/copY --from=0 /go/src/test/app .CMD ["./app"]构建与坚持大小
docker build .
docker psREPOSITORY TAG IMAGE ID CREATED SIZEgolang-multi-stage latest bcbbf69a9b59 6 minutes ago 6.7MB结论
一旦新特性发布成功,可以使用multi-stage构建将变得非常方便。在未正式发布之前,我们还得老老实实地使用旧的够将模式
原文链接:http://pliutau.com/multi-stage-dockerfile-for-golang-application/?utm_source=golangweekly&utm_medium=email
总结以上是内存溢出为你收集整理的Golang应用的多场景Dockerfile全部内容,希望文章能够帮你解决Golang应用的多场景Dockerfile所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)