Dockerfile 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # Stage 1: Install dependencies
  2. FROM node:22-bookworm AS deps
  3. # 使用阿里云镜像源
  4. RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources
  5. RUN corepack enable && corepack prepare pnpm@10.24.0 --activate
  6. RUN apt-get update && \
  7. apt-get install -y --no-install-recommends ffmpeg python3 python3-pip && \
  8. rm -rf /var/lib/apt/lists/*
  9. RUN pip3 install --break-system-packages -i https://mirrors.aliyun.com/pypi/simple/ faster-whisper
  10. WORKDIR /app
  11. COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./
  12. COPY apps/cli/package.json apps/cli/
  13. COPY apps/web/package.json apps/web/
  14. COPY packages/shared/package.json packages/shared/
  15. COPY packages/core/package.json packages/core/
  16. COPY packages/tts/package.json packages/tts/
  17. COPY packages/templates/package.json packages/templates/
  18. COPY packages/collect/package.json packages/collect/
  19. RUN pnpm config set registry https://registry.npmmirror.com && \
  20. pnpm install --frozen-lockfile
  21. # Stage 2: Build
  22. FROM deps AS build
  23. COPY . .
  24. RUN pnpm build
  25. # Stage 3: Runtime
  26. FROM node:22-bookworm-slim AS runtime
  27. RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources
  28. RUN apt-get update && \
  29. apt-get install -y --no-install-recommends ffmpeg python3 python3-pip && \
  30. rm -rf /var/lib/apt/lists/*
  31. RUN pip3 install --break-system-packages -i https://mirrors.aliyun.com/pypi/simple/ faster-whisper
  32. WORKDIR /app
  33. COPY --from=build /app/package.json ./
  34. COPY --from=build /app/node_modules node_modules/
  35. COPY --from=build /app/apps/cli/dist apps/cli/dist/
  36. COPY --from=build /app/apps/cli/package.json apps/cli/
  37. COPY --from=build /app/apps/web/.next apps/web/.next/
  38. COPY --from=build /app/apps/web/node_modules apps/web/node_modules/
  39. COPY --from=build /app/apps/web/package.json apps/web/
  40. COPY --from=build /app/apps/web/next.config.ts apps/web/
  41. COPY --from=build /app/apps/web/src apps/web/src/
  42. COPY --from=build /app/packages/shared/dist packages/shared/dist/
  43. COPY --from=build /app/packages/shared/package.json packages/shared/
  44. COPY --from=build /app/packages/core/dist packages/core/dist/
  45. COPY --from=build /app/packages/core/package.json packages/core/
  46. COPY --from=build /app/packages/tts/dist packages/tts/dist/
  47. COPY --from=build /app/packages/tts/package.json packages/tts/
  48. COPY --from=build /app/packages/tts/scripts packages/tts/scripts/
  49. COPY --from=build /app/packages/templates/dist packages/templates/dist/
  50. COPY --from=build /app/packages/templates/src packages/templates/src/
  51. COPY --from=build /app/packages/templates/package.json packages/templates/
  52. COPY --from=build /app/packages/collect/dist packages/collect/dist/
  53. COPY --from=build /app/packages/collect/package.json packages/collect/
  54. COPY --from=build /app/assets assets/
  55. COPY --from=build /app/config config/
  56. EXPOSE 3000
  57. WORKDIR /app/apps/web
  58. CMD ["./node_modules/.bin/next", "start"]