ffddad1c创建于 2024年12月27日历史提交
FROM golang:alpine AS builder

LABEL stage=gobuilder

# 配置 Go 环境以启用交叉编译
ENV CGO_ENABLED=0
ENV GOARCH=arm64           
ENV GOOS=linux             
ENV GOPROXY=https://goproxy.cn,direct

# 设置阿里云镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 安装所需的依赖和时区数据
RUN apk update --no-cache && apk add --no-cache tzdata

# 设置工作目录
WORKDIR /build

# 复制源码到构建镜像
COPY . .

# 复制配置文件
COPY apps/user/rpc/etc /app/etc

# 下载 Go 模块依赖
RUN go mod tidy
RUN go mod download


# 编译 Go 程序并输出二进制文件
RUN go build -ldflags="-s -w" -o /app/user apps/user/rpc/user.go

# 第二阶段:构建精简的运行时镜像
FROM scratch

# 复制必要的证书和时区文件
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai

# 设置时区
ENV TZ=Asia/Shanghai

# 设置工作目录
WORKDIR /app

# 复制编译好的二进制文件和配置文件
COPY --from=builder /app/user /app/user
COPY --from=builder /app/etc /app/etc

# 启动应用程序
CMD ["./user", "-f", "etc/user-rpc.yaml"]