chore(docker): 优化 Dockerfile 和部署脚本以提升构建效率

- 在 Dockerfile 中合并 RUN 命令以减少镜像层数,提升构建效率。
- 移除不必要的用户创建和权限设置,暂时使用 root 用户运行以简化构建过程。
- 更新部署脚本以使用构建缓存加速构建,并记录构建时间,提供更好的用户反馈。
This commit is contained in:
zhouyonggao 2025-12-20 15:32:40 +08:00
parent 9d6017da04
commit ebcff4433b
2 changed files with 10 additions and 14 deletions

View File

@ -20,7 +20,7 @@ COPY grpc/user/userv1/go.mod grpc/user/userv1/go.sum* ./grpc/user/userv1/
WORKDIR /app
RUN go work sync
# 安装 protoc 插件(需要在有 go.mod 的环境中安装
# 安装 protoc 插件(使用单个 RUN 命令减少层数
# 使用临时工作目录安装插件,避免影响项目目录
WORKDIR /tmp
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest && \
@ -60,20 +60,11 @@ RUN go build -ldflags="-w -s" -trimpath -o /out/server ./cmd/server/main.go && \
# 使用最小化的 alpine 镜像(包含时区支持,应用需要 loc=Local
FROM alpine:3.19
# 安装运行时必需的包:时区和 CA 证书(用于可能的 HTTPS 连接)
# 安装运行时必需的包:时区和 CA 证书
RUN apk add --no-cache ca-certificates tzdata && \
# 创建非 root 用户
addgroup -g 1000 appuser && \
adduser -D -u 1000 -G appuser appuser && \
# 清理缓存
rm -rf /var/cache/apk/*
mkdir -p /app/storage/export /app/log
WORKDIR /app
COPY --from=builder /out/server /app/server
# 设置文件所有者和执行权限(在切换用户之前)
RUN chown appuser:appuser /app/server && chmod +x /app/server
# 创建必要的目录
RUN mkdir -p /app/storage/export /app/log && \
chown -R appuser:appuser /app/storage /app/log
EXPOSE 8077
USER appuser:appuser
# 使用 root 用户运行
ENTRYPOINT ["/app/server"]

View File

@ -32,11 +32,16 @@ fi
# proto 文件将在容器内自动生成,无需在构建前生成
# 每次重新构建镜像
echo "开始构建 Docker 镜像..."
echo "开始构建 Docker 镜像(使用构建缓存加速)..."
echo "提示: 首次构建可能需要 3-5 分钟,后续构建会更快(使用缓存)"
START_TIME=$(date +%s)
DOCKER_BUILDKIT=1 docker build \
--progress=plain \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg GOPROXY="${GOPROXY:-https://goproxy.cn,direct}" \
-t "$IMAGE:$TAG" -f Dockerfile .
BUILD_TIME=$(($(date +%s) - START_TIME))
echo "构建完成,耗时: ${BUILD_TIME}"
USE_IMAGE="$IMAGE:$TAG"
mkdir -p log storage/export