# 使用官方 Node.js 运行时作为基础镜像 FROM node:18-slim # 设置工作目录 WORKDIR /app # 安装 Playwright 依赖 RUN apt-get update && apt-get install -y \ wget \ gnupg \ ca-certificates \ && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list \ && apt-get update && apt-get install -y google-chrome-stable fonts-noto-color-emoji \ && apt-get clean && rm -rf /var/lib/apt/lists/* # 安装 Playwright 浏览器 RUN npm init -y && npm install playwright && npx playwright install-deps && npx playwright install chrome # 复制 package.json 和 package-lock.json(如果存在) COPY package*.json ./ # 安装依赖 RUN npm ci --only=production # 复制应用代码 COPY . . # 暴露 Hugging Face Spaces 要求的端口 EXPOSE 7860 # 设置非 root 用户 RUN addgroup --gid 1001 --system appgroup \ && adduser --uid 1001 --system appuser --ingroup appgroup # 更改文件所有权 RUN chown -R appuser:appgroup /app # 切换到非 root 用户 USER 1001 # 启动应用 CMD ["npm", "start"]