我正在创建一个dockercompose文件。我想用这个文件建立一个项目。该dockercompose将生成2个docker容器:一个用于mysql,另一个用于apache2。我想要做的是使一切自动化,并且我想生成一个唯一的mysql密码。有可能这样做吗?
谢谢
您可以通过环境变量为mysql设置随机密码MYSQL_RANDOM_ROOT_PASSWORD。
这是一个可选变量。设置为yes可以为root用户生成一个随机的初始密码(使用pwgen)。生成的root密码将打印到stdout(GENROTED 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`
Run Code Online (Sandbox Code Playgroud)
简化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}
Run Code Online (Sandbox Code Playgroud)
在您的中django_admin.py,您现在可以使用DB_PASSWORDenv变量:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_name',
'USER': 'root',
'PASSWORD': os.environ.get('DB_PASSWORD', ''),
'HOST': 'host'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |