在 Docker 微服务架构中,数据库的部署方式需要根据业务需求、性能要求、数据一致性等因素综合考虑。以下是几种常见方案及其适用场景:
示例: ```yaml # docker-compose.yml 片段 services: order-service: image: order-app depends_on: - order-db
order-db: image: mysql:8.0 volumes: - order_db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: secret ```
env
# 微服务环境变量配置
DB_HOST=production-db.cluster-123.rds.amazonaws.com
DB_PORT=5432
因素 | 容器内数据库 | 外部数据库 |
---|---|---|
性能 | 较低(虚拟化开销) | 高(独占资源) |
备份恢复 | 需手动配置卷 | 自动托管方案 |
横向扩展 | 困难 | 容易(如读写分离) |
本地开发便利性 | 高(一键启动) | 需连接远程 |
如果选择容器化数据库,需特别注意:
- 数据持久化:必须挂载 volume,否则容器重启后数据丢失。
yaml
volumes:
- db_data:/var/lib/postgresql/data
- 性能调优:在 docker run
中限制 CPU/内存,避免被其他容器抢占资源。
bash
docker run --memory="4g" --cpus="2" postgres:14
根据您的具体业务规模和技术栈,可以进一步优化部署策略。需要更具体的建议可提供补充信息。