环境变量与配置管理
在 Docker Compose 中,合理管理环境变量和配置文件可以提高多容器应用的可移植性和可维护性。
1. 使用环境变量
- 可以在
docker-compose.yml文件中直接定义:
services:
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
`
- 使用
.env文件集中管理:
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=mydb
services:
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
-
优点:
- 配置集中管理
- 支持不同环境快速切换(开发/测试/生产)
2. 配置文件(Config / Secret)
- Compose v3.3+ 支持 Config 和 Secret 管理:
services:
app:
image: myapp
configs:
- source: app_config
target: /etc/myapp/config.yml
configs:
app_config:
file: ./config/config.yml
- Secret 管理敏感信息:
services:
db:
image: mysql:8
secrets:
- db_root_password
secrets:
db_root_password:
file: ./secrets/root_password.txt
3. 使用环境变量的高级技巧
- 默认值:
environment:
MYSQL_USER: ${MYSQL_USER:-defaultuser}
- 复合变量:
environment:
DATABASE_URL: "mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@db:3306/${MYSQL_DATABASE}"
- 在命令中使用:
command: sh -c "echo $DATABASE_URL"
4. 配置挂载卷
- 将宿主机配置文件挂载到容器:
services:
app:
volumes:
- ./config/app.yml:/app/config.yml:ro
- 可实现容器间共享和灵活更新
5. 最佳实践
- 对敏感信息使用 Secret,避免直接写入 Compose 文件
- 使用
.env文件统一管理变量,支持不同环境 - 配置文件尽量挂载为只读(
ro)防止容器意外修改 - 使用环境变量生成动态配置,提高可移植性
通过环境变量和配置管理,Docker Compose 应用可以灵活适应不同环境,保证配置安全和易维护性。
相关内容
- 构建自定义 Registry 本章节介绍如何搭建和管理 Docker 私有 Registry,包括部署自定义 Registry、配置存储与访问权限、镜像推送与拉取流程,以及安全与备份策略,满...
- 与 Kubernetes 的比较与协作 本章节对比 Docker 与 Kubernetes 的异同点,并讲解两者的协作方式,包括容器管理、编排、服务发现、部署流程和最佳实践,帮助理解容器生态系统中的应...
- Rootless Docker 与安全边界 本章节介绍 Rootless Docker 的使用方法及安全边界管理,包括非 root 容器运行原理、配置步骤、权限限制和网络隔离策略,提升容器安全性并降低宿主...
- 常用命令速查表 本章节提供 Docker 常用命令速查表,包括镜像管理、容器操作、网络配置、卷管理、日志查看及调试命令,帮助开发者快速查找和使用 Docker 命令,提高容器管...
- 参考文档与学习资源 本章节整理 Docker 官方文档、社区资源、教程和示例项目,帮助开发者系统学习 Docker 技术,掌握容器化应用的构建、运行、管理和优化方法。
- 示例项目与练习 本章节提供 Docker 示例项目和练习,包括容器化应用部署、Docker Compose 多服务编排、镜像优化、网络配置和存储管理,帮助开发者通过实战加深对...