一、新建go代码我的项目
1、新建目录
mkdir hello && cd hello && touch main.go
2、关上main.go 补充代码
package mainfunc main() { println("hello world , hi")}
二、docker打包-单个构建
1、生成Dockerfile文件
touch Dockerfile
2、关上Dockerfile 补充代码
#go环境FROM golang:1.19# 在容器内设置 /hello 为当前工作目录RUN mkdir /helloWORKDIR /hello# 把文件复制到当前工作目录COPY . .#执行go build生成二进制打包文件helloRUN go build -o hello ./main.go# docker run 时执行命令ENTRYPOINT ["./hello"]
3、构建docker镜像 hello
docker build -t hello .
此时咱们能够查看docker客户端,生成了一个 993M大小的二进制镜像!
其实咱们只是写了一个 “hello world,hi” 字符串。
为什么这么大?
因为咱们装置了golang:1.19环境。
三、多阶段构建
咱们关上Dockerfile,改成如下代码:
#go环境FROM golang:1.19.0-alpine3.16 as build# 在容器内设置 /hello 为当前工作目录RUN mkdir /helloWORKDIR /hello# 把文件复制到当前工作目录COPY . .#执行go build生成二进制打包文件helloRUN go build -o hello_new ./main.goFROM alpine:3.16.2 as prodWORKDIR /hello_newCOPY --from=build /hello .# docker run 时执行命令ENTRYPOINT ["./hello_new"]
此时再build
docker build -t hello_new .
整个包的大小只有 6.75M了。
而后再执行一下
➜ hello git:(master) ✗ docker run hello_new
输入:
hello world , hi