docker-compose-skill
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese<objective>
Set up and manage local multi-service development environments using Docker Compose. Provides compose.yml templates, health checks, hot reload, and essential commands for PostgreSQL, Redis, MongoDB, and other services.
</objective>
<quick_start>
- Copy the compose.yml template below for your stack (Postgres, Redis, etc.)
- Create a file with database credentials
.env - Run to start services
docker compose up -d - Use to monitor </quick_start>
docker compose logs -f
<success_criteria>
- All services start with and reach healthy state
docker compose up -d - Health checks configured for every database/cache service
- Environment variables externalized to (no hardcoded secrets in compose.yml)
.env - Hot reload working for application code via volume mounts
- cleanly removes all containers and volumes </success_criteria>
docker compose down -v
<objective>
使用Docker Compose搭建并管理本地多服务开发环境。提供compose.yml模板、健康检查、热重载功能,以及PostgreSQL、Redis、MongoDB等服务的必备命令。
</objective>
<quick_start>
- 为你的技术栈(Postgres、Redis等)复制下方的compose.yml模板
- 创建包含数据库凭证的.env文件
- 运行启动服务
docker compose up -d - 使用监控服务 </quick_start>
docker compose logs -f
<success_criteria>
- 所有服务通过启动并进入健康状态
docker compose up -d - 为每个数据库/缓存服务配置健康检查
- 环境变量外置到.env文件(compose.yml中无硬编码密钥)
- 通过卷挂载实现应用代码热重载
- 可彻底移除所有容器和卷 </success_criteria>
docker compose down -v
Docker Compose Skill
Docker Compose Skill
Local development environments using Docker Compose for multi-service setups.
使用Docker Compose搭建本地多服务开发环境。
Quick Start
快速开始
Common Services
常用服务
| Service | Image | Default Port |
|---|---|---|
| PostgreSQL | | 5432 |
| Redis | | 6379 |
| MongoDB | | 27017 |
| MySQL | | 3306 |
| 服务 | 镜像 | 默认端口 |
|---|---|---|
| PostgreSQL | | 5432 |
| Redis | | 6379 |
| MongoDB | | 27017 |
| MySQL | | 3306 |
Basic compose.yml
基础compose.yml
yaml
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${DB_USER:-app}
POSTGRES_PASSWORD: ${DB_PASSWORD:-secret}
POSTGRES_DB: ${DB_NAME:-app_dev}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-app}"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:yaml
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${DB_USER:-app}
POSTGRES_PASSWORD: ${DB_PASSWORD:-secret}
POSTGRES_DB: ${DB_NAME:-app_dev}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-app}"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:Essential Commands
必备命令
bash
undefinedbash
undefinedStart services (detached)
启动服务(后台模式)
docker compose up -d
docker compose up -d
Start with logs visible
启动服务并查看日志
docker compose up
docker compose up
View logs
查看日志
docker compose logs -f [service]
docker compose logs -f [service]
Shell into container
进入容器终端
docker compose exec db psql -U app
docker compose exec db psql -U app
Stop and remove containers
停止并移除容器
docker compose down
docker compose down
Stop and remove volumes (full reset)
停止并移除容器和卷(完全重置)
docker compose down -v
docker compose down -v
Rebuild without cache
无缓存重建镜像
docker compose build --no-cache
undefineddocker compose build --no-cache
undefinedEnvironment Variables
环境变量
Create file in project root:
.envbash
undefined在项目根目录创建.env文件:
bash
undefined.env
.env
DB_USER=app
DB_PASSWORD=secret
DB_NAME=myapp_dev
REDIS_URL=redis://localhost:6379
Reference in compose.yml:
```yaml
environment:
POSTGRES_USER: ${DB_USER:-app}DB_USER=app
DB_PASSWORD=secret
DB_NAME=myapp_dev
REDIS_URL=redis://localhost:6379
在compose.yml中引用:
```yaml
environment:
POSTGRES_USER: ${DB_USER:-app}Health Checks
健康检查
Always add health checks for service dependencies:
yaml
services:
db:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-app}"]
interval: 5s
timeout: 5s
retries: 5
app:
depends_on:
db:
condition: service_healthy务必为服务依赖项添加健康检查:
yaml
services:
db:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-app}"]
interval: 5s
timeout: 5s
retries: 5
app:
depends_on:
db:
condition: service_healthyHot Reload Setup
热重载配置
Mount source code for development:
yaml
services:
app:
build: .
volumes:
- .:/app # Source code
- /app/node_modules # Preserve node_modules
environment:
- NODE_ENV=development挂载源代码用于开发:
yaml
services:
app:
build: .
volumes:
- .:/app # 源代码目录
- /app/node_modules # 保留node_modules
environment:
- NODE_ENV=developmentProfiles for Optional Services
可选服务的Profiles配置
yaml
services:
mailhog:
image: mailhog/mailhog
profiles: ["mail"]
ports:
- "8025:8025"yaml
services:
mailhog:
image: mailhog/mailhog
profiles: ["mail"]
ports:
- "8025:8025"Start with: docker compose --profile mail up
启动命令:docker compose --profile mail up
undefinedundefinedReference Files
参考文件
- - Common compose file patterns
reference/compose-patterns.md - - Database, cache, queue service configs
reference/services.md - - Ports, networks, volumes
reference/networking.md - - Development workflow commands
reference/dev-workflow.md
- - 常用compose文件模式
reference/compose-patterns.md - - 数据库、缓存、队列服务配置
reference/services.md - - 端口、网络、卷配置
reference/networking.md - - 开发工作流命令
reference/dev-workflow.md