casualroom/apps/fenghuo/docker/Dockerfile.api

50 lines
1.6 KiB
Docker
Executable File
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.

# 构建阶段 - 使用 Bun 官方镜像
FROM node:22.16.0-alpine as base
# 更改 apk 镜像源为阿里云
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 设置 npm 镜像源
RUN npm config set registry https://registry.npmmirror.com
# 安装 bun
RUN npm install -g bun
RUN npm install -g pnpm && pnpm config set registry https://registry.npmmirror.com
# 设置工作目录
WORKDIR /app
# 构建阶段 - 安装所有依赖并构建
FROM base as builder
WORKDIR /app
# 复制 workspace 配置文件
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.json ./
# 复制所有需要的包
COPY apps/fenghuo/api ./apps/fenghuo/api
COPY apps/fenghuo/common ./apps/fenghuo/common
COPY apps/fenghuo/db ./apps/fenghuo/db
COPY shared/oidc-provider ./shared/oidc-provider
COPY shared/tus ./shared/tus/
COPY shared/typescript-config ./shared/typescript-config
COPY shared/eslint-config ./shared/eslint-config
# 安装所有依赖(包括 devDependencies
RUN pnpm install
# 构建后端应用
RUN pnpm --filter backend build
# 运行时阶段 - 最小化的生产镜像
FROM base as runtime
# 设置工作目录
WORKDIR /app
# 从构建阶段复制构建产物
COPY --from=builder /app/apps/fenghuo/api/dist ./apps/fenghuo/api/dist
# 从构建阶段复制生成的 Prisma 客户端和 schema
COPY --from=builder /app/apps/fenghuo/db ./apps/fenghuo/db/
RUN pnpm --filter db install
RUN pnpm --filter db db:generate
# 复制入口脚本
COPY apps/fenghuo/api/entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
# 暴露端口
EXPOSE 3000
# 启动应用
CMD ["./entrypoint.sh"]