我正在创建一个 dockercompose 文件。
我想用这个文件建立一个项目。这个 dockercompose 将生成 2 个 docker 容器:一个用于 mysql,另一个用于 apache2。
我想做的是自动化一切,我想生成一个唯一的 mysql 密码。有可能这样做吗?
谢谢
最佳答案
您可以通过环境变量MYSQL_RANDOM_ROOT_PASSWORD
为mysql设置一个随 secret 码。 .
MYSQL_RANDOM_ROOT_PASSWORD
This is an optional variable. Set to yes to generate a random initial password for the root user (using pwgen). The generated root password will be printed to stdout (GENERATED ROOT PASSWORD: .....).
https://github.com/mysql/mysql-docker#mysql_random_root_password
Docker Compose 环境变量:
https://docs.docker.com/compose/environment-variables/
编辑:替代方法 - 环境注入(inject)
这是一个示例替代策略,允许您对 MySQL 和 Django(或任何其他图像)使用随 secret 码。
您需要安装
pwgen
在您的 主持人 系统使用 brew、apt 或 yum,然后生成密码,将其设置为环境变量。您可以随时重新运行以更改密码。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'
}
}
关于docker-compose - 是否可以使用 docker compose 生成随机 mysql 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706385/