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