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

View File

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