Dockerfile 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # 使用指定基础镜像
  2. FROM docker.1ms.run/node:20.19.4
  3. # 定义构建参数
  4. ARG WX_MINI_APP_ID
  5. ARG WX_MINI_APP_SECRET
  6. ARG WECHAT_MERCHANT_ID
  7. ARG WECHAT_V3_KEY
  8. ARG WECHAT_PAY_NOTIFY_URL
  9. ARG WECHAT_PUBLIC_KEY
  10. ARG WECHAT_PRIVATE_KEY
  11. ARG WECHAT_MERCHANT_CERT_SERIAL_NO
  12. ARG WECHAT_PLATFORM_CERT_SERIAL_NO
  13. # 设置软件源为清华大学镜像源
  14. RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main non-free contrib" > /etc/apt/sources.list && \
  15. echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main non-free contrib" >> /etc/apt/sources.list && \
  16. echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main non-free contrib" >> /etc/apt/sources.list && \
  17. echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main non-free contrib" >> /etc/apt/sources.list
  18. RUN apt update --fix-missing && \
  19. apt install -y curl wget
  20. # 安装 pnpm
  21. RUN npm install -g pnpm@10.18.3
  22. # 配置国内npm镜像
  23. RUN pnpm config set registry https://registry.npmmirror.com/
  24. RUN pnpm config set @jsr:registry https://npm.jsr.io
  25. # 添加PostgreSQL 17的官方仓库
  26. RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
  27. echo "deb http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main" > /etc/apt/sources.list.d/pgdg.list
  28. # 更新包列表并安装PostgreSQL 17客户端工具及其他常用工具(已添加jq)
  29. RUN apt update && \
  30. apt install -y \
  31. # PostgreSQL 17客户端工具
  32. postgresql-client-17
  33. # 确认版本
  34. RUN pg_dump --version
  35. # 设置工作目录
  36. WORKDIR /workspace
  37. # 设置备份目录环境变量
  38. ENV BACKUP_DIR=/app/backups-prd/
  39. # 复制根目录配置文件
  40. COPY package.json pnpm-workspace.yaml pnpm-lock.yaml .npmrc ./
  41. # 复制各项目 package.json
  42. COPY web/package.json ./web/
  43. COPY packages/server/package.json ./packages/server/
  44. # 安装依赖
  45. RUN pnpm install --frozen-lockfile
  46. # 复制项目文件
  47. COPY . .
  48. # 设置环境变量
  49. ENV WX_MINI_APP_ID=${WX_MINI_APP_ID}
  50. ENV WX_MINI_APP_SECRET=${WX_MINI_APP_SECRET}
  51. ENV WECHAT_MERCHANT_ID=${WECHAT_MERCHANT_ID}
  52. ENV WECHAT_V3_KEY=${WECHAT_V3_KEY}
  53. ENV WECHAT_PAY_NOTIFY_URL=${WECHAT_PAY_NOTIFY_URL}
  54. ENV WECHAT_PUBLIC_KEY=${WECHAT_PUBLIC_KEY}
  55. ENV WECHAT_PRIVATE_KEY=${WECHAT_PRIVATE_KEY}
  56. ENV WECHAT_MERCHANT_CERT_SERIAL_NO=${WECHAT_MERCHANT_CERT_SERIAL_NO}
  57. ENV WECHAT_PLATFORM_CERT_SERIAL_NO=${WECHAT_PLATFORM_CERT_SERIAL_NO}
  58. # 构建 web 应用
  59. RUN cd web && pnpm run build
  60. # 暴露端口(根据实际需要调整)
  61. EXPOSE 8080
  62. # 启动命令
  63. CMD ["sh", "-c", "cd web && pnpm run start"]