|
|
@@ -0,0 +1,75 @@
|
|
|
+# 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"]
|