我正在创建一个dockercompose文件。我想用这个文件建立一个项目。这个dockercompose将生成两个docker容器:一个用于mysql,另一个用于apache2。我想要做的是自动化所有的事情,我想生成一个唯一的mysql密码。这样做有可能吗?
谢谢
发布于 2016-09-27 07:14:45
您可以通过环境变量MYSQL_RANDOM_ROOT_PASSWORD为mysql设置随机密码。
MYSQL_RANDOM_ROOT_PASSWORD
这是一个可选变量。设置为yes可为root用户(使用pwgen)生成随机初始密码。生成的root密码将打印到stdout (生成的ROOT密码:.....)。
https://github.com/mysql/mysql-docker#mysql_random_root_password
Docker Compose环境变量:
https://docs.docker.com/compose/environment-variables/
编辑:替代方法-环境注入
这是一个示例替代策略,允许您对MySQL和Django (或任何其他图像)使用随机密码。
您需要使用brew、apt或yum在主机系统上安装pwgen,然后生成一个将其设置为环境变量的密码。您可以随时重新运行此命令以更改密码。
export DB_PASSWORD=`pwgen -Bs1 12`简化的docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: db_name
MYSQL_USER: user
MYSQL_PASSWORD: user_password
web:
image: django
volumes:
- ./django_admin.py:/app
expose:
- "8000"
links:
- db
environment:
DB_PASSWORD: ${DB_PASSWORD}在您的django_admin.py中,现在可以使用DB_PASSWORD环境变量:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_name',
'USER': 'root',
'PASSWORD': os.environ.get('DB_PASSWORD', ''),
'HOST': 'host'
}
}https://stackoverflow.com/questions/39706385
复制相似问题