ConfigDocker编排
依赖可启动不等于服务可用
depends_on 只表达启动顺序。若 API 必须等待数据库真正就绪,为数据库定义 healthcheck,再让依赖项使用 condition: service_healthy。
services:
db:
image: postgres:16
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app"]
interval: 5s
timeout: 3s
retries: 10
api:
build: .
depends_on:
db:
condition: service_healthyprofiles 能把本地才需要的观测、邮件捕获等服务隔离开,默认启动核心服务,必要时再显式启用。
services:
mailpit:
image: axllent/mailpit
profiles: ["devtools"]
# docker compose --profile devtools up- 健康检查必须存在于容器内可执行的命令,精简镜像可能没有 curl。
- 环境变量适合配置,不适合提交密码;本地用 .env,生产使用部署平台的 secret。
- 给命名卷明确名称和升级策略,避免
down -v误删数据。
Compose 适合本地开发和单机编排;跨主机调度、滚动发布和复杂网络治理仍需要更高层的运行平台。
把服务端口只暴露给需要访问的网络,数据库通常不必映射到宿主机,能减少本地误连和端口冲突。