build(docker): 优化Docker配置并添加国内镜像源

- 将基础镜像替换为AWS ECR公共镜像
- 使用阿里云镜像源加速apt安装
- 配置pnpm使用淘宝源
- 优化Dockerfile结构并添加ffmpeg验证
- 添加.dockerignore文件排除不必要文件
This commit is contained in:
2026-01-07 00:18:04 +08:00
parent 745c8cf29b
commit 762cb5412f
3 changed files with 36 additions and 12 deletions

8
.dockerignore Normal file
View File

@@ -0,0 +1,8 @@
node_modules
npm-debug.log
pnpm-debug.log
Dockerfile
.git
.gitignore
.dockerignore
README.md

View File

@@ -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"]

View File

@@ -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');