Dockerfile 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # 使用指定基础镜像
  2. FROM docker.1ms.run/node:20.19.4-bookworm
  3. # 设置软件源为清华大学镜像源,并先安装必要的工具
  4. RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \
  5. echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \
  6. echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \
  7. echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security/ bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list
  8. # 先更新并安装curl(不验证签名),然后添加GPG密钥
  9. RUN apt update --allow-unauthenticated --fix-missing && \
  10. apt install -y curl wget gnupg
  11. # 添加Debian官方GPG密钥
  12. RUN wget -qO - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr).asc | apt-key add - && \
  13. wget -qO - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr)-security.asc | apt-key add -
  14. # 现在可以正常更新和安装其他软件
  15. RUN apt update --fix-missing && \
  16. apt install -y ca-certificates
  17. # 安装 pnpm
  18. RUN npm install -g pnpm
  19. # 配置国内npm镜像
  20. RUN pnpm config set registry https://registry.npmmirror.com/
  21. RUN pnpm config set @jsr:registry https://npm.jsr.io
  22. # 添加PostgreSQL 17的官方仓库
  23. RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
  24. echo "deb http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main" > /etc/apt/sources.list.d/pgdg.list
  25. # 更新包列表并安装PostgreSQL 17客户端工具
  26. RUN apt update && \
  27. apt install -y postgresql-client-17
  28. # 确认版本
  29. RUN pg_dump --version
  30. # 设置工作目录
  31. WORKDIR /workspace
  32. # 设置备份目录环境变量
  33. ENV BACKUP_DIR=/app/backups-prd/
  34. # 复制根目录配置文件
  35. COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
  36. # 复制各项目 package.json
  37. COPY web/package.json ./web/
  38. COPY packages/ ./packages/
  39. # 安装依赖
  40. RUN pnpm install --frozen-lockfile
  41. # 复制项目文件
  42. COPY . .
  43. # 构建 web 应用
  44. RUN cd web && pnpm run build
  45. # 暴露端口(根据实际需要调整)
  46. EXPOSE 8080
  47. # 启动命令
  48. CMD ["sh", "-c", "cd web && pnpm run start"]