Files
EchoChat/media-server/Dockerfile
2026-05-18 19:42:55 +08:00

64 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ==================================================
# EchoChat media-server Dockerfile多阶段构建
# 基础镜像node:20-bookworm-slimmediasoup 构建需要 python3 + g++
# ==================================================
# ---------------- Stage 1: builder ----------------
FROM node:20-bookworm-slim AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
python3 \
python3-pip \
build-essential \
pkg-config \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY package.json package-lock.json* ./
RUN --mount=type=cache,target=/root/.npm \
if [ -f package-lock.json ]; then npm ci; else npm install; fi
COPY tsconfig.json tsconfig.build.json ./
COPY src ./src
RUN npm run build
# 裁掉 devDependencies只保留运行时依赖
RUN npm prune --omit=dev
# ---------------- Stage 2: runtime ----------------
FROM node:20-bookworm-slim AS runtime
ENV NODE_ENV=production \
LOG_PRETTY=false \
HTTP_HOST=0.0.0.0 \
HTTP_PORT=3300
# mediasoup-worker 是原生二进制,运行时需要 libstdc++ 等基础库slim 默认已包含
# 健康检查需要 curl
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates ffmpeg \
&& rm -rf /var/lib/apt/lists/* \
&& useradd --system --create-home --shell /usr/sbin/nologin mediasoupv
WORKDIR /app
COPY --from=builder --chown=mediasoup:mediasoup /app/node_modules ./node_modules
COPY --from=builder --chown=mediasoup:mediasoup /app/dist ./dist
COPY --chown=mediasoup:mediasoup package.json ./
USER mediasoup
EXPOSE 3300
EXPOSE 40000-40199/udp
EXPOSE 40000-40199/tcp
HEALTHCHECK --interval=10s --timeout=3s --start-period=15s --retries=3 \
CMD curl -fsS http://127.0.0.1:${HTTP_PORT:-3300}/healthz || exit 1
CMD ["node", "dist/app.js"]