zhemima/msmail
0
1# 基础镜像:使用 Node.js 20 的 Alpine Linux 版本2FROM node:20-alpine3 4# 设置工作目录5WORKDIR /app6 7# 安装系统依赖8RUN apk add --no-cache \9 # 基本构建工具10 python3 \11 make \12 g++ \13 # Playwright 依赖14 chromium \15 nss \16 freetype \17 freetype-dev \18 harfbuzz \19 ca-certificates \20 ttf-freefont \21 # 其他依赖22 gcompat23 24# 设置 Playwright 的环境变量25ENV PLAYWRIGHT_BROWSERS_PATH=/usr/bin26ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=127ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium-browser28ENV PLAYWRIGHT_SKIP_BROWSER_VALIDATION=129 30# 复制依赖文件并安装31COPY package*.json ./32COPY tsconfig*.json ./33COPY vite.config.ts ./34COPY index.html ./35COPY index.ts ./36COPY src/ ./src/37COPY public/ ./public/38COPY functions/ ./functions/39 40 41RUN npm install42RUN npm run build:server43 44# 创建 debug 目录并设置权限45RUN mkdir -p /app/debug && \46 chmod 777 /app/debug47 48# 创建非 root 用户和用户组49RUN addgroup -S -g 1001 nodejs && \50 adduser -S -D -H -u 1001 -G nodejs hono51 52# 设置应用文件的所有权53RUN chown -R hono:nodejs /app54 55# 切换到非 root 用户56USER hono57 58# 声明容器要暴露的端口59EXPOSE 786060ENV PORT=786061 62# 启动应用63CMD ["node", "dist-server/index.js"]64 