Docker Compose 多服务开发环境

用 Docker Compose 编排多服务开发环境:healthcheck + depends_on 保证启动顺序、环境变量管理、内部网络通信。

#type / howto #status / growing #tech / ops #resource / docker

[!info] related notes

Docker Compose 多服务开发环境

关键设计

1. Healthcheck + depends_on

postgres:
  healthcheck:
    test: ['CMD-SHELL', 'pg_isready']
    interval: 10s
    retries: 5

api:
  depends_on:
    postgres:
      condition: service_healthy  # 等健康检查通过才启动

不只是”容器启动”,而是”服务真正可用”。

2. 环境变量默认值

environment:
  POSTGRES_USER: ${DB_USER:-bodysense}  # 优先 .env,默认 bodysense

3. 内部网络

networks:
  bodysense-network:
    driver: bridge

服务间通过服务名访问:postgres-dev:5432,不是 localhost

4. 只暴露必要端口

数据库端口只映射到宿主机用于调试,生产环境不暴露。

开发模式选择

模式前端后端数据库
纯本地pnpm dev:webpnpm dev:apiDocker
全 DockerDockerDockerDocker

推荐:数据库用 Docker,应用服务本地跑(热更新更快)。

常见问题

端口冲突

.env 中的端口映射。

容器间通信

用服务名(postgres-dev)而不是 localhost。容器内端口是原始端口(5432),不是映射端口。

创建于 2026/6/25 更新于 2026/6/25