Golang项目通用Dockerfile编写

不屈真实 · · 1646 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang go path和go mod的区别

go path 所有运行的go文件都要放在gopath文件下, 因为下载下来的包都在这里目录下可以引用
go path顾名思义,需要一个环境变量 GOPATHGOPATH/src 存放项目源代码
$GOPATH/bin 存放项目可执行文件
go mod 他有一套引用机制 无论你的go文件在哪里 都可以引用包

go path方式

#编译镜像
FROM  golang:latest  as builder
MAINTAINER  TigerwolfC@***.com.cn
WORKDIR  /go/src
COPY  .  .
RUN  go  build  -o  myapp
 
#产物运行镜像
FROM  alpine:latest
WORKDIR  /root
COPY  --from=builder /go/src/myapp  .
EXPOSE 8088
CMD  [“./myapp”]

go mod方式

FROM golang:latest as build
#ENV GOPROXY https://goproxy.io
ENV GO111MODULE on
WORKDIR /go/cache
ADD go.mod .
ADD go.sum .
RUN go mod download
WORKDIR /go/release
ADD . .
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o gin_demo main.go

FROM scratch as prod
COPY --from=build /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY --from=build /go/release/gin_demo /
COPY --from=build /go/release/conf ./conf
CMD ["/gin_demo"]

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:不屈真实

查看原文:Golang项目通用Dockerfile编写

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1646 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传