Step 1 · 明确服务边界
最小 AI demo 通常包含:
api:FastAPI / Node 服务redis:缓存、限流、任务状态postgres:业务真相数据worker:异步任务消费者(可选)
Step 2 · 写 .env.example
APP_PORT=8000
REDIS_PORT=6379
POSTGRES_PORT=5432
POSTGRES_USER=learnhub
POSTGRES_PASSWORD=learnhub
POSTGRES_DB=learnhub不要提交真实 .env。
Step 3 · 写 compose.yaml
services:
redis:
image: redis:7-alpine
ports:
- "${REDIS_PORT:-6379}:6379"
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${POSTGRES_USER:-learnhub}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-learnhub}
POSTGRES_DB: ${POSTGRES_DB:-learnhub}
ports:
- "${POSTGRES_PORT:-5432}:5432"
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:Step 4 · 加健康检查
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 10Step 5 · 写 README 启动说明
必须包含:
cp .env.example .envdocker compose up -d- 端口表
- 查看日志:
docker compose logs -f api - 清理数据:
docker compose down -v
Step 6 · 面试讲述
讲清三件事:
- Compose 解决“别人跑不起来”的问题。
.env.example是交付边界。- healthcheck 与日志是排障入口。