Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件配置应用服务,然后使用单个命令即可创建并启动所有服务。
一个常见的 Web 应用可能包含以下服务:
web-app (前端)
│
├── api-service (后端API)
│ │
│ └── database (数据库)
│
└── cache-service (缓存)
│
└── message-queue (消息队列)
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
depends_on:
- api
- cache
api:
build: ./api
environment:
- DB_HOST=db
- DB_PORT=5432
volumes:
- ./api:/app
db:
image: postgres:13
environment:
- POSTGRES_PASSWORD=example
volumes:
- db_data:/var/lib/postgresql/data
cache:
image: redis:6
ports:
- "6379:6379"
volumes:
db_data:
image
:使用现成的 Docker 镜像build
:基于 Dockerfile 构建镜像ports
:端口映射environment
:环境变量volumes
:数据卷挂载depends_on
:服务依赖关系services:
api:
env_file:
- .env.api
environment:
- NODE_ENV=production
.env.api
文件示例:
DB_USER=admin
DB_PASS=secret
networks:
frontend:
driver: bridge
backend:
driver: bridge
services:
web:
networks:
- frontend
api:
networks:
- frontend
- backend
db:
networks:
- backend
services:
api:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
services:
db:
deploy:
resources:
limits:
cpus: '0.50'
memory: 512M
reservations:
memory: 256M
bash
docker-compose up -d
bash
docker-compose ps
bash
docker-compose logs -f service_name
bash
docker-compose down
latest
标签yaml
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
bash
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
容器启动顺序问题:
depends_on
+ healthcheck
确保依赖服务就绪端口冲突:
数据持久化:
性能问题:
通过合理使用 Docker Compose,您可以高效地管理复杂的多容器应用,确保开发和生产环境的一致性,提高部署效率和系统可靠性。