Spaces:
Paused
Paused
| # 使用官方 Node.js 运行时作为基础镜像 | |
| FROM node:23-alpine | |
| # 设置工作目录 | |
| WORKDIR /app | |
| # 安装系统依赖 (与之前相同) | |
| RUN apk add --no-cache \ | |
| python3 make g++ \ | |
| chromium nss freetype freetype-dev harfbuzz ca-certificates ttf-freefont \ | |
| gcompat | |
| # 设置 Playwright 的环境变量 (与之前相同) | |
| ENV PLAYWRIGHT_BROWSERS_PATH=/usr/bin | |
| ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 | |
| ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium-browser | |
| ENV PLAYWRIGHT_SKIP_BROWSER_VALIDATION=1 | |
| # 仅复制 package.json 和 package-lock.json 以利用 Docker 缓存 | |
| COPY package*.json ./ | |
| # 安装生产环境依赖。这不会安装 esbuild 等 devDependencies。 | |
| RUN npm ci --only=production | |
| # 复制构建后的应用代码和静态资源 | |
| COPY dist/ ./dist/ | |
| COPY public/ ./public/ | |
| # 复制 cookies.json 文件(如果存在) | |
| COPY cookies.json* ./ | |
| # 设置非 root 用户(安全最佳实践) | |
| RUN addgroup -g 1001 -S nodejs && \ | |
| adduser -S nodejs -u 1001 | |
| # 创建 screenshots 和 logs 目录,并设置正确的权限 | |
| RUN mkdir -p /app/screenshots && \ | |
| mkdir -p /app/logs && \ | |
| chown -R nodejs:nodejs /app && \ | |
| chmod -R 777 /app/screenshots && \ | |
| chmod -R 777 /app/logs | |
| USER nodejs | |
| # 暴露端口 | |
| EXPOSE 7860 | |
| # 设置环境变量 | |
| ENV NODE_ENV=production | |
| ENV PORT=7860 | |
| # 启动应用 (现在会执行 package.json 中更新后的 start 命令) | |
| CMD ["npm", "start"] |