# Stage 1: Install dependencies FROM node:22-bookworm AS deps # 使用阿里云镜像源 RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources RUN corepack enable && corepack prepare pnpm@10.24.0 --activate RUN apt-get update && \ apt-get install -y --no-install-recommends ffmpeg python3 python3-pip && \ rm -rf /var/lib/apt/lists/* RUN pip3 install --break-system-packages -i https://mirrors.aliyun.com/pypi/simple/ faster-whisper WORKDIR /app COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./ COPY apps/cli/package.json apps/cli/ COPY apps/web/package.json apps/web/ COPY packages/shared/package.json packages/shared/ COPY packages/core/package.json packages/core/ COPY packages/tts/package.json packages/tts/ COPY packages/templates/package.json packages/templates/ COPY packages/collect/package.json packages/collect/ RUN pnpm config set registry https://registry.npmmirror.com && \ pnpm install --frozen-lockfile # Stage 2: Build FROM deps AS build COPY . . RUN pnpm build # Stage 3: Runtime FROM node:22-bookworm-slim AS runtime RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources RUN apt-get update && \ apt-get install -y --no-install-recommends ffmpeg python3 python3-pip && \ rm -rf /var/lib/apt/lists/* RUN pip3 install --break-system-packages -i https://mirrors.aliyun.com/pypi/simple/ faster-whisper WORKDIR /app COPY --from=build /app/package.json ./ COPY --from=build /app/node_modules node_modules/ COPY --from=build /app/apps/cli/dist apps/cli/dist/ COPY --from=build /app/apps/cli/package.json apps/cli/ COPY --from=build /app/apps/web/.next apps/web/.next/ COPY --from=build /app/apps/web/node_modules apps/web/node_modules/ COPY --from=build /app/apps/web/package.json apps/web/ COPY --from=build /app/apps/web/next.config.ts apps/web/ COPY --from=build /app/apps/web/src apps/web/src/ COPY --from=build /app/packages/shared/dist packages/shared/dist/ COPY --from=build /app/packages/shared/package.json packages/shared/ COPY --from=build /app/packages/core/dist packages/core/dist/ COPY --from=build /app/packages/core/package.json packages/core/ COPY --from=build /app/packages/tts/dist packages/tts/dist/ COPY --from=build /app/packages/tts/package.json packages/tts/ COPY --from=build /app/packages/tts/scripts packages/tts/scripts/ COPY --from=build /app/packages/templates/dist packages/templates/dist/ COPY --from=build /app/packages/templates/src packages/templates/src/ COPY --from=build /app/packages/templates/package.json packages/templates/ COPY --from=build /app/packages/collect/dist packages/collect/dist/ COPY --from=build /app/packages/collect/package.json packages/collect/ COPY --from=build /app/assets assets/ COPY --from=build /app/config config/ EXPOSE 3000 WORKDIR /app/apps/web CMD ["./node_modules/.bin/next", "start"]