From 762cb5412f82545f074393cd060ef9fdaf118552 Mon Sep 17 00:00:00 2001 From: XiaoMo Date: Wed, 7 Jan 2026 00:18:04 +0800 Subject: [PATCH] =?UTF-8?q?build(docker):=20=E4=BC=98=E5=8C=96Docker?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=9B=BD=E5=86=85?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将基础镜像替换为AWS ECR公共镜像 - 使用阿里云镜像源加速apt安装 - 配置pnpm使用淘宝源 - 优化Dockerfile结构并添加ffmpeg验证 - 添加.dockerignore文件排除不必要文件 --- .dockerignore | 8 ++++++++ Dockerfile | 38 +++++++++++++++++++++++++++----------- index.js | 2 +- 3 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..1133ff0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +node_modules +npm-debug.log +pnpm-debug.log +Dockerfile +.git +.gitignore +.dockerignore +README.md diff --git a/Dockerfile b/Dockerfile index 7de9ffe..06f235a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,36 @@ -FROM node:22-slim - -RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg \ - && rm -rf /var/lib/apt/lists/* +# 使用 AWS ECR Public 镜像源 (通常国内可直连) +FROM public.ecr.aws/docker/library/node:22-slim ENV NODE_ENV=production -ENV CACHE_DIR=/app/.cache WORKDIR /app -COPY package.json ./ -RUN corepack enable && pnpm --version && pnpm install --prod +# 1. 替换 Debian 软件源为阿里云镜像 (解决 apt 网络问题) +RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources && \ + apt-get update && \ + apt-get install -y --no-install-recommends ffmpeg && \ + rm -rf /var/lib/apt/lists/* + +# 验证 ffmpeg +RUN ffmpeg -version && ffprobe -version + +# 2. 配置 pnpm 淘宝源并安装依赖 +# 启用 corepack +RUN corepack enable && \ + pnpm config set registry https://registry.npmmirror.com/ + +COPY package.json ./ +RUN pnpm install --prod --frozen-lockfile || pnpm install --prod -# 只复制必要源代码,避免把缓存等无关内容塞进镜像 COPY . . -RUN useradd -m appuser && mkdir -p /app/.cache && chown -R appuser:appuser /app -USER appuser +# 3. 权限与启动 +ENV PORT=9520 +ENV CACHE_DIR=/app/.cache -EXPOSE 9520 +RUN useradd -m appuser && \ + mkdir -p "$CACHE_DIR" && \ + chown -R appuser:appuser /app + +USER appuser +EXPOSE $PORT CMD ["node", "index.js"] diff --git a/index.js b/index.js index 1e7aa53..e33e97f 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ const crypto = require('crypto'); const EventEmitter = require('events'); // Configuration -const PORT = 9520; +const PORT = process.env.PORT || 9520; const API_BASE = 'http://183.6.121.121:9558/api'; const CACHE_DIR = process.env.CACHE_DIR ? path.resolve(process.env.CACHE_DIR) : path.join(__dirname, '.cache');