build(docker): 优化Docker配置并添加国内镜像源
- 将基础镜像替换为AWS ECR公共镜像 - 使用阿里云镜像源加速apt安装 - 配置pnpm使用淘宝源 - 优化Dockerfile结构并添加ffmpeg验证 - 添加.dockerignore文件排除不必要文件
This commit is contained in:
8
.dockerignore
Normal file
8
.dockerignore
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
pnpm-debug.log
|
||||||
|
Dockerfile
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
.dockerignore
|
||||||
|
README.md
|
||||||
38
Dockerfile
38
Dockerfile
@@ -1,20 +1,36 @@
|
|||||||
FROM node:22-slim
|
# 使用 AWS ECR Public 镜像源 (通常国内可直连)
|
||||||
|
FROM public.ecr.aws/docker/library/node:22-slim
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV CACHE_DIR=/app/.cache
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY package.json ./
|
# 1. 替换 Debian 软件源为阿里云镜像 (解决 apt 网络问题)
|
||||||
RUN corepack enable && pnpm --version && pnpm install --prod
|
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 . .
|
COPY . .
|
||||||
|
|
||||||
RUN useradd -m appuser && mkdir -p /app/.cache && chown -R appuser:appuser /app
|
# 3. 权限与启动
|
||||||
USER appuser
|
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"]
|
CMD ["node", "index.js"]
|
||||||
|
|||||||
2
index.js
2
index.js
@@ -16,7 +16,7 @@ const crypto = require('crypto');
|
|||||||
const EventEmitter = require('events');
|
const EventEmitter = require('events');
|
||||||
|
|
||||||
// Configuration
|
// Configuration
|
||||||
const PORT = 9520;
|
const PORT = process.env.PORT || 9520;
|
||||||
const API_BASE = 'http://183.6.121.121:9558/api';
|
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');
|
const CACHE_DIR = process.env.CACHE_DIR ? path.resolve(process.env.CACHE_DIR) : path.join(__dirname, '.cache');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user