GO服务dockerfile
# 第一阶段:构建阶段
# 使用官方Golang镜像作为基础镜像,这里指定了版本
FROM golang:1.23-alpine AS builder
ENV GOPROXY=https://goproxy.cn,direct
# 设置工作目录
WORKDIR /app
# 复制go.mod和go.sum文件到工作目录
COPY go.mod go.sum ./
# 使用Go模块下载依赖
RUN go mod download
# 复制项目源代码到工作目录
COPY . .
# 编译Go应用程序
# CGO_ENABLED=0 禁用CGO,确保构建出静态链接的二进制文件
# GOOS=linux 指定目标操作系统为Linux
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .
# 第二阶段:运行阶段
# 使用Alpine作为基础镜像,用于运行编译好的二进制文件
FROM alpine:latest
# 设置工作目录
WORKDIR /app
# 从构建阶段复制编译好的二进制文件
COPY --from=builder /app/myapp .
# 暴露应用程序的端口
EXPOSE 8080
# 设置容器启动时运行的命令
ENTRYPOINT ["./myapp"]
# 运行容器时,默认执行的命令
CMD [""]
# 注意:如果你的应用程序需要其他环境变量或者配置文件,
# 你可以在Dockerfile中设置环境变量或者复制配置文件到镜像中。