为什么MySQL Docker容器抱怨在使用Docker 17.03机密时必须定义MYSQL_ROOT_PASSWORD env?

时间:2017-03-16 21:04:10

标签: mysql wordpress docker docker-swarm docker-secrets

我正在尝试使用Docker的Wordpress秘密示例(下面的链接)来使用我的Docker Compose设置(对于Drupal)。

https://docs.docker.com/engine/swarm/secrets/#/advanced-example-use-secrets-with-a-wordpress-service

但是,当'mysql'容器旋转时,会输出以下错误:

  

“错误:数据库未初始化且未指定密码选项   您需要指定MYSQL_ROOT_PASSWORD,MYSQL_ALLOW_EMPTY_PASSWORD和MYSQL_RANDOM_ROOT_PASSWORD之一“

我使用'docker secret create'命令创建了秘密:

docker secret create mysql_root_pw tmp-file-holding-root-pw.txt
docker secret create mysql_pw tmp-file-holding-pw.txt

运行上述内容后,群组环境中现在存在秘密“ mysql_root_pw ”和“ mysql_pw ”。通过执行验证:

docker secret ls

以下是 docker-compose.yml 文件中的相关部分:

version: '3.1'
services:
  mysql:
    image: mysql/mysql-server:5.7.17 
   environment:
      - MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_pw"
      - MYSQL_PASSWORD_FILE="/run/secrets/mysql_pw"
    secrets:
      - mysql_pw
      - mysql_root_pw

secrets:
  mysql_pw:
    external: true
  mysql_root_pw:
    external: true

当我执行“ docker stack deploy MYSTACK ”时,当'mysql'容器尝试启动时,我收到上述错误。

似乎“ MYSQL_PASSWORD_FILE ”和“ MYSQL_ROOT_PASSWORD_FILE ”不是MySQL认可的标准环境变量,它仍然期待“ MYSQL_ROOT_PASSWORD ”环境变量。

我正在使用Docker 17.03。

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您的秘密也是空字符串,则会收到此错误。这就是我发生的事情,安装了秘密并正确配置了服务,但由于没有密码,它仍然失败。