我正在创建一个dockercompose文件。 我想用这个文件设置一个项目。这个dockercompose将生成2个docker容器:一个用于mysql,另一个用于apache2。 我想要做的是自动化一切,我想生成一个独特的mysql密码。有可能吗?
由于
答案 0 :(得分:5)
您可以通过环境变量MYSQL_RANDOM_ROOT_PASSWORD
设置mysql的随机密码。
这是一个可选变量。设置为yes以为root用户生成随机初始密码(使用pwgen)。生成的root密码将打印到stdout(GENERATED ROOT PASSWORD:.....)。
https://github.com/mysql/mysql-docker#mysql_random_root_password
Docker撰写环境变量:
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
env变量:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_name',
'USER': 'root',
'PASSWORD': os.environ.get('DB_PASSWORD', ''),
'HOST': 'host'
}
}