From 44c20adba63f2ff291d27bf0b8568d175a50f78b Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 22 Jun 2026 11:58:09 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=9B=B4=E6=96=B0cicd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/main.yml | 2 +- Dockerfile | 57 ++++++++++++++++++++++----------------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml index 0fafa31..5cea3d2 100644 --- a/.gitea/workflows/main.yml +++ b/.gitea/workflows/main.yml @@ -72,7 +72,7 @@ jobs: docker run -d \ --name web-01-api \ --restart always \ - -p 8084:3002 \ + -p 8084:3003 \ ${{ vars.ALIYUN_REGISTRY }}/${{ vars.ALIYUN_NAMESPACE }}/${{ vars.ALIYUN_REPO }}:latest # 清理旧镜像 diff --git a/Dockerfile b/Dockerfile index b111eeb..42748e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,45 +1,52 @@ # 构建阶段 -FROM crpi-jlsdxetsdmy4ckxh.cn-shenzhen.personal.cr.aliyuncs.com/zsq_proxy/node:20-alpine AS build +FROM crpi-jlsdxetsdmy4ckxh.cn-shenzhen.personal.cr.aliyuncs.com/zsq_proxy/node:22-alpine AS build WORKDIR /app -# 添加构建参数 -ARG BUILD_VERSION -ARG BUILD_TIME -ARG CACHE_BUST +# 关键:切换 Alpine 软件源到阿里云(大幅提升下载速度) +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories -ENV BUILD_VERSION=$BUILD_VERSION -ENV BUILD_TIME=$BUILD_TIME +# 安装编译工具:使用 build-base 元包(gcc/g++/make 等) + python3 + openssl +RUN apk add --no-cache python3 build-base openssl && rm -rf /var/cache/apk/* -# 强制打破 Docker 缓存 -RUN echo "Cache bust: ${CACHE_BUST} - ${BUILD_VERSION} - ${BUILD_TIME}" - -# 安装 pnpm +# 安装 pnpm 并配置镜像源 RUN npm install -g pnpm && \ pnpm config set registry https://registry.npmmirror.com -COPY package*.json ./ -RUN pnpm install --no-frozen-lockfile # 修改这里 +# 复制依赖文件 +COPY package*.json pnpm-lock.yaml ./ +RUN pnpm install --frozen-lockfile COPY . . -# 强制清理 .next -RUN rm -rf .next +# 生成 Prisma Client(构建时需要) +RUN npx prisma generate -# 构建 +# 构建项目 RUN pnpm build -# 部署阶段 -FROM crpi-jlsdxetsdmy4ckxh.cn-shenzhen.personal.cr.aliyuncs.com/zsq_proxy/node:20-alpine AS app +# 生产阶段 +FROM crpi-jlsdxetsdmy4ckxh.cn-shenzhen.personal.cr.aliyuncs.com/zsq_proxy/node:22-alpine AS production WORKDIR /app -ENV NODE_ENV=production -ENV NODE_OPTIONS="--max-old-space-size=4096" +# 同样切换源,保证后续如有 apk 操作也能快速下载 +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories -COPY --from=build /app/.next ./.next -COPY --from=build /app/public ./public -COPY --from=build /app/package.json ./package.json +# 安装 dumb-init 和 openssl +RUN apk add --no-cache dumb-init openssl && rm -rf /var/cache/apk/* + +# 复制环境变量文件 +COPY .env ./ + +# 直接从构建阶段复制已安装的依赖和构建产物 COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/dist ./dist +COPY package*.json ./ -EXPOSE 3003 +# 如果运行时需要 Prisma Client,复制过去 +COPY --from=build /app/node_modules/.prisma ./node_modules/.prisma +COPY --from=build /app/prisma ./prisma -CMD ["pnpm", "start"] \ No newline at end of file +EXPOSE 3002 + +ENTRYPOINT ["dumb-init", "--"] +CMD ["sh", "-c", "set -a; . ./.env; node dist/main"] \ No newline at end of file