chore(docker): 更新 Dockerfile 和部署脚本以支持 go.work 和 gRPC 模块
- 在 Dockerfile 中添加对 go.work 和 gRPC 用户模块依赖文件的复制,确保构建过程中的工作区配置正确。 - 更新部署脚本,增加对 go.work 和 gRPC 模块文件存在性的检查,确保构建前的必要文件完整性。 - 提供警告提示,确保 proto 文件生成,避免构建失败。
This commit is contained in:
parent
4bfd075cf1
commit
0fe947b5bb
|
|
@ -6,3 +6,7 @@ server/config.yaml
|
|||
server/config.test.yaml
|
||||
server/config.prod.yaml
|
||||
scripts/*.tar
|
||||
# 注意:不要忽略以下文件,它们对构建很重要
|
||||
# !go.work
|
||||
# !go.work.sum
|
||||
# !grpc/user/userv1/
|
||||
|
|
|
|||
21
Dockerfile
21
Dockerfile
|
|
@ -4,10 +4,29 @@ ENV GO111MODULE=on
|
|||
ENV GOPROXY=https://goproxy.cn,direct
|
||||
RUN apk add --no-cache git tzdata
|
||||
WORKDIR /app
|
||||
|
||||
# 复制 go.work 文件(用于工作区配置,必须在项目根目录)
|
||||
COPY go.work go.work.sum* ./
|
||||
|
||||
# 复制 server 模块的依赖文件(先复制依赖文件以利用 Docker 缓存)
|
||||
COPY server/go.mod server/go.sum ./server/
|
||||
WORKDIR /app/server
|
||||
RUN go mod download
|
||||
COPY server/ ./
|
||||
|
||||
# 复制 grpc/user/userv1 模块的依赖文件
|
||||
WORKDIR /app
|
||||
COPY grpc/user/userv1/go.mod grpc/user/userv1/go.sum ./grpc/user/userv1/
|
||||
WORKDIR /app/grpc/user/userv1
|
||||
RUN go mod download
|
||||
|
||||
# 复制所有源代码(包括生成的 proto 文件)
|
||||
# 注意:必须在 go.work 所在的目录下构建,才能正确识别工作区
|
||||
WORKDIR /app
|
||||
COPY server/ ./server/
|
||||
COPY grpc/user/userv1/ ./grpc/user/userv1/
|
||||
|
||||
# 构建应用(在项目根目录,go.work 会自动生效)
|
||||
WORKDIR /app/server
|
||||
RUN go build -o /out/server ./cmd/server/main.go
|
||||
|
||||
FROM alpine:3.19
|
||||
|
|
|
|||
|
|
@ -7,10 +7,33 @@ TAG="$ENV_NAME"
|
|||
PORT="${PORT:-8077}"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
# 检查必要的文件是否存在
|
||||
if [ ! -f "$ROOT_DIR/go.work" ]; then
|
||||
echo "错误: go.work 文件不存在,请确保已正确配置工作区" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$ROOT_DIR/grpc/user/userv1/go.mod" ]; then
|
||||
echo "错误: grpc/user/userv1/go.mod 文件不存在" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查 proto 文件是否已生成(至少检查一个关键文件)
|
||||
if [ ! -f "$ROOT_DIR/grpc/user/userv1/user.pb.go" ]; then
|
||||
echo "警告: proto 文件未生成,构建可能会失败" >&2
|
||||
echo "提示: 运行 'cd grpc && make generate' 生成 proto 文件" >&2
|
||||
read -p "是否继续构建? (y/N) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 如果镜像存在,则直接使用;否则构建
|
||||
if docker image inspect "$IMAGE:$TAG" >/dev/null 2>&1; then
|
||||
echo "镜像 $IMAGE:$TAG 已存在,跳过构建。"
|
||||
else
|
||||
echo "开始构建 Docker 镜像..."
|
||||
DOCKER_BUILDKIT=1 docker build \
|
||||
--build-arg BUILDKIT_INLINE_CACHE=1 \
|
||||
--build-arg GOPROXY="${GOPROXY:-https://goproxy.cn,direct}" \
|
||||
|
|
|
|||
Loading…
Reference in New Issue