← 中文资源

简体中文版本

用 Docker Compose 搭建本地开发环境

配置 docker-compose.yml 一起运行应用、数据库和缓存,支持热重载,让团队成员和 CI 使用一致环境。

阅读英文原文

为什么开发用 Docker Compose

Docker Compose 让每个开发者(和 CI)使用相同的数据库版本、Redis 配置和环境变量,不再有“在我机器上能跑”的问题。

完整的 docker-compose.yml

services:
  app:
    build:
      context: .
      target: development
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://dev:devpass@postgres:5432/myapp
      REDIS_URL: redis://redis:6379
      NODE_ENV: development
    volumes:
      - .:/app
      - /app/node_modules
    depends_on:
      postgres:
        condition: service_healthy
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: dev
      POSTGRES_PASSWORD: devpass
      POSTGRES_DB: myapp
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U dev -d myapp"]
      interval: 2s
      retries: 20
  redis:
    image: redis:7-alpine
volumes:
  pgdata:

热重载与数据

把源码目录挂载进容器并保留 node_modules 匿名卷,避免宿主依赖覆盖容器依赖。命名卷让数据库在 down 后保留,down -v 可重置。

验证环境

预期结果:docker compose up 后应用可在 3000 端口访问,健康检查通过,修改源码触发重载。执行 docker compose down -v 再启动,验证冷启动也能成功。