Use Cases

Docker Compose 实战指南:Claude Code 加速开发环境搭建

用 Claude Code 设计 Docker Compose 配置、编写多阶段 Dockerfile,并落地一套可复现的本地开发环境。

用 Docker Compose 打造可复现的开发环境

Docker Compose 是用来定义和管理多个容器的工具,能大幅提升开发环境的搭建效率。从服务结构设计到 Dockerfile 优化,Claude Code 能一路帮你顺畅地把基础设施结构落地。

全栈开发环境结构

让 Claude Code 一次性生成整个项目的结构吧。

> 帮我用 Docker Compose 搭建 Next.js + PostgreSQL + Redis 的开发环境。
> 要支持热更新、初始数据导入、健康检查。
# docker-compose.yml
version: "3.9"

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
      - /app/.next
    environment:
      - DATABASE_URL=postgresql://postgres:password@db:5432/myapp
      - REDIS_URL=redis://redis:6379
      - NODE_ENV=development
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy
    command: npm run dev

  db:
    image: postgres:16-alpine
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: myapp
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ./docker/init.sql:/docker-entrypoint-initdb.d/init.sql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 5s
      retries: 5

  mailhog:
    image: mailhog/mailhog
    ports:
      - "1025:1025"
      - "8025:8025"

volumes:
  postgres_data:
  redis_data:

开发用 Dockerfile 优化

支持热更新的开发 Dockerfile:

# Dockerfile.dev
FROM node:20-alpine

WORKDIR /app

# 先复制 package 文件以充分利用缓存
COPY package.json package-lock.json ./
RUN npm ci

# 源代码通过 volume 挂载共享
# 无需 COPY(已在 docker-compose.yml 中配置)

EXPOSE 3000

CMD ["npm", "run", "dev"]

生产环境多阶段构建

生产部署的优化 Dockerfile:

# Dockerfile
# Stage 1: 安装依赖
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production=false

# Stage 2: 构建
FROM node:20-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build

# Stage 3: 生产镜像
FROM node:20-alpine AS runner
WORKDIR /app

RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs
EXPOSE 3000
ENV PORT 3000

CMD ["node", "server.js"]

按环境拆分配置文件

下面是按开发/测试/生产拆分配置的模式。

# docker-compose.override.yml(开发环境用,自动加载)
services:
  app:
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - DEBUG=true
      - LOG_LEVEL=debug

  db:
    ports:
      - "5432:5432"

  adminer:
    image: adminer
    ports:
      - "8080:8080"
    depends_on:
      - db
# docker-compose.test.yml
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    environment:
      - DATABASE_URL=postgresql://postgres:password@db:5432/myapp_test
      - NODE_ENV=test
    command: npm run test:ci
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: myapp_test
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
    tmpfs:
      - /var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 3s
      timeout: 3s
      retries: 10

用 Makefile 简化常用命令

把常用命令集中到 Makefile 里。

.PHONY: up down build logs db-shell db-migrate db-seed test

up:
	docker compose up -d

down:
	docker compose down

build:
	docker compose build --no-cache

logs:
	docker compose logs -f app

db-shell:
	docker compose exec db psql -U postgres -d myapp

db-migrate:
	docker compose exec app npx prisma migrate dev

db-seed:
	docker compose exec app npx prisma db seed

test:
	docker compose -f docker-compose.yml -f docker-compose.test.yml run --rm app

clean:
	docker compose down -v --remove-orphans

总结

使用 Docker Compose,团队成员就能轻松复现同一套开发环境。借助 Claude Code 高效完成服务结构设计、Dockerfile 优化、环境分离等基础设施配置完全可行。

进一步的容器化开发环境集成可以参考 Dev Container 配置指南,与 CI/CD 流水线的联动请参考 CI/CD 流水线搭建指南。还建议查看 Docker Compose 官方文档

#Claude Code #Docker #Docker Compose #开发环境 #infrastructure

让你的 Claude Code 工作流更上一层楼

50 个经过实战检验的提示词模板,现在就能复制粘贴到 Claude Code 中使用。

免费

免费 PDF:5 分钟看懂 Claude Code 速查表

关键命令、快捷键与提示词示例,整理在一页可打印的 A4 纸上。

下载 PDF
M

本文作者

Masa

深度使用 Claude Code 的工程师。运营 claudecode-lab.com——一个涵盖 10 种语言、超过 2,000 页内容的科技媒体。