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

Golang应用的多场景Dockerfile

发布时间:2020-12-16 18:14:54 所属栏目:大数据 来源:网络整理
导读:Golang应用的多场景Dockerfile 一般通用的在Docker中编译Golang应用的方法需要2个Dockerfile——一个用于平台编译,另一个用于打包第一个镜像中编译的不包含工具的结果。这个叫编译模式。 自从Docker v17.05 版本后可以通过单个Dockerfile文件来使用多场景构

Golang应用的多场景Dockerfile

一般通用的在Docker中编译Golang应用的方法需要2个Dockerfile——一个用于平台编译,另一个用于打包第一个镜像中编译的不包含工具的结果。这个叫编译模式。

自从Dockerv17.05版本后可以通过单个Dockerfile文件来使用多场景构建。

应用

开始一个”Hello World”应用:

package main

import "fmt"

func main() {
    fmt.Println("Hello world!")
}

单个Dockerfile

在多场景构建中,单个Dockerfile允许多个FROM指令,并且最终构建的镜像来源于Dockerfile中最后一个FROM指令。

COPY -from=0将获取来源于之前场景中的app文件并复制到WORKDIR。这将复制最基本的来源之前场景中创建编译的go的二进制文件。

FROM golang:1.8.1

WORKDIR /go/src/test/

COPY main.go .

RUN GOOS=linux go build -o app .

FROM alpine:latest
RUN apk --no-cache add ca-certificates

WORKDIR /root/

COPY --from=0 /go/src/test/app .

CMD ["./app"]

构建与坚持大小

docker build .
docker ps
REPOSITORY          TAG     IMAGE ID            CREATED           SIZE

golang-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

(编辑:李大同)

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

    推荐文章
      热点阅读