0606.7
Some checks failed
Next.js CI/CD 流水线 / deploy (push) Failing after 12s

This commit is contained in:
2025-06-06 02:06:45 +08:00
parent 533d2862ff
commit 35b460d2ef
3 changed files with 23 additions and 35 deletions

View File

@@ -1,10 +1,10 @@
# 🚀 优化版 .dockerignore for npm (减小镜像体积)
# 🚀 优化版 .dockerignore (减小镜像体积)
# 依赖和构建产物
node_modules
.next
.npm
.pnpm-store
.npm
.yarn
npm-debug.log*
yarn-debug.log*
@@ -12,10 +12,6 @@ yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
# 包管理器锁文件 (保留npm排除其他)
pnpm-lock.yaml
yarn.lock
# 版本控制
.git
.gitignore

View File

@@ -1,56 +1,44 @@
# 🚀 优化版 Dockerfile for Next.js with pnpm (Ubuntu环境解决兼容性)
# 🚀 优化版 Dockerfile for Next.js with pnpm (目标: <200MB)
# 第一阶段:构建阶段
FROM node:22-slim AS builder
FROM node:22-alpine AS builder
# 设置工作目录
WORKDIR /app
# 安装必要的系统依赖
RUN apt-get update && apt-get install -y \
python3 \
make \
g++ \
&& rm -rf /var/lib/apt/lists/*
# 安装 pnpm (指定版本避免版本差异)
RUN npm install -g pnpm
# 安装 pnpm
RUN npm install -g pnpm@9.15.0
# 复制包管理器配置文件 (利用Docker缓存)
COPY package.json pnpm-lock.yaml ./
# 复制包管理器配置文件 (只需package.jsonpnpm会自动生成锁文件)
COPY package.json ./
# 安装依赖 (pnpm正确处理二进制文件自动生成锁文件)
RUN pnpm install --prod --no-optional && \
pnpm store prune
# 安装依赖 (禁用缓存以减小体积)
RUN pnpm install --frozen-lockfile --no-optional
# 复制源代码和配置文件
COPY . .
# 重新安装所有依赖用于构建 (包含开发依赖)
RUN pnpm install --no-optional
# 构建应用
RUN pnpm run build
# 清理构建阶段缓存 (关键优化点)
RUN rm -rf node_modules && \
RUN pnpm store prune && \
rm -rf node_modules && \
rm -rf ~/.pnpm-store && \
rm -rf /root/.pnpm-store && \
pnpm store prune
rm -rf /root/.pnpm-store
# 第二阶段:运行阶段 (使用Ubuntu slim镜像)
FROM node:22-slim AS runner
# 第二阶段:运行阶段 (使用更小的基础镜像)
FROM node:22-alpine AS runner
# 设置工作目录
WORKDIR /app
# 创建非root用户
RUN groupadd --system --gid 1001 nodejs && \
useradd --system --uid 1001 --gid nodejs nextjs
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 nextjs
# 只安装必要的运行时工具
RUN apt-get update && apt-get install -y \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN apk add --no-cache wget && \
apk cache clean
# 从构建阶段复制构建产物 (standalone模式包含所有需要的依赖)
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./

View File

@@ -25,6 +25,8 @@
"react-error-boundary": "^6.0.0",
"react-icons": "^5.5.0",
"styled-components": "^6.0.9",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-react": "^5.22.0",
"zustand": "^5.0.5"
},
"devDependencies": {
@@ -33,6 +35,8 @@
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"@types/swagger-jsdoc": "^6.0.4",
"@types/swagger-ui-react": "^5.18.0",
"tailwindcss": "^4",
"typescript": "^5"
}