返回博客
后端
2026-06-1813 min

Docker 化一个全栈 Monorepo 的正确姿势

多服务编排、构建优化与本地开发体验的平衡……

Docker 化一个全栈 Monorepo 的正确姿势

多阶段构建

pnpm monorepo 的 Docker 镜像一定要用多阶段构建,否则镜像里会塞满 devDependencies:

dockerfile
FROM node:20-alpine AS deps
WORKDIR /app
COPY pnpm-lock.yaml package.json ./
RUN corepack enable && pnpm install --frozen-lockfile

FROM node:20-alpine AS build
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN pnpm build

本地开发

本地用 docker compose 起依赖服务(Postgres、Redis),应用本身跑在宿主机上以便热更新。两者用 .env 连接。

DockerMonorepoDevOps