Spaces:
Running
Running
# 基础镜像:使用 Node.js 20 的 Alpine Linux 版本 | |
FROM node:20-alpine | |
# 设置工作目录 | |
WORKDIR /app | |
# 安装系统依赖 | |
RUN apk add --no-cache \ | |
# 基本构建工具 | |
python3 \ | |
make \ | |
g++ \ | |
# Playwright 依赖 | |
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 | |
# 复制依赖文件并安装 | |
COPY package*.json tsconfig.json ./ | |
RUN npm install | |
# 复制源代码和静态文件 | |
COPY src/ ./src/ | |
COPY index.html ./index.html | |
RUN npm run build | |
# 创建非 root 用户和用户组 | |
RUN addgroup -S -g 1001 nodejs && \ | |
adduser -S -D -H -u 1001 -G nodejs hono | |
# 设置应用文件的所有权 | |
RUN chown -R hono:nodejs /app | |
# 切换到非 root 用户 | |
USER hono | |
# 声明容器要暴露的端口 | |
EXPOSE 7860 | |
ENV PORT=7860 | |
# 启动应用 | |
CMD ["node", "dist/index.js"] | |