是否可以使用dockercompose生成随机mysql密码

时间:2016-09-26 15:10:42

标签: docker-compose

我正在创建一个dockercompose文件。 我想用这个文件设置一个项目。这个dockercompose将生成2个docker容器:一个用于mysql,另一个用于apache2。 我想要做的是自动化一切,我想生成一个独特的mysql密码。有可能吗?

由于

1 个答案:

答案 0 :(得分:5)

您可以通过环境变量MYSQL_RANDOM_ROOT_PASSWORD设置mysql的随机密码。

MYSQL_RANDOM_ROOT_PASSWORD

  

这是一个可选变量。设置为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'
    }
}