共计 876 个字符,预计需要花费 3 分钟才能阅读完成。
一、新建 go 代码我的项目
1、新建目录
mkdir hello && cd hello && touch main.go
2、关上 main.go 补充代码
package main
func main() {println("hello world , hi")
}
二、docker 打包 - 单个构建
1、生成 Dockerfile 文件
touch Dockerfile
2、关上 Dockerfile 补充代码
#go 环境
FROM golang:1.19
# 在容器内设置 /hello 为当前工作目录
RUN mkdir /hello
WORKDIR /hello
# 把文件复制到当前工作目录
COPY . .
#执行 go build 生成二进制打包文件 hello
RUN 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 /hello
WORKDIR /hello
# 把文件复制到当前工作目录
COPY . .
#执行 go build 生成二进制打包文件 hello
RUN go build -o hello_new ./main.go
FROM alpine:3.16.2 as prod
WORKDIR /hello_new
COPY --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
正文完