Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MySQL Docker容器抱怨在使用Docker 17.03机密时必须定义MySQL\u ROOT\u PASSWORD env?_Mysql_Wordpress_Docker_Docker Swarm_Docker Secrets - Fatal编程技术网

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

为什么MySQL Docker容器抱怨在使用Docker 17.03机密时必须定义MySQL\u ROOT\u PASSWORD env?,mysql,wordpress,docker,docker-swarm,docker-secrets,Mysql,Wordpress,Docker,Docker Swarm,Docker Secrets,我正在尝试调整Docker的Wordpress机密示例(下面的链接)以在我的Docker Compose设置(针对Drupal)中工作 但是,当“mysql”容器启动时,会输出以下错误: 错误:数据库未初始化,未指定密码选项 您需要指定MYSQL\u ROOT\u PASSWORD、MYSQL\u ALLOW\u EMPTY\u PASSWORD和MYSQL\u RANDOM\u ROOT\u PASSWORD中的一个” 我使用“docker secret create”命令创建了机密: do

我正在尝试调整Docker的Wordpress机密示例(下面的链接)以在我的Docker Compose设置(针对Drupal)中工作

但是,当“mysql”容器启动时,会输出以下错误:

错误:数据库未初始化,未指定密码选项 您需要指定MYSQL\u ROOT\u PASSWORD、MYSQL\u ALLOW\u EMPTY\u PASSWORD和MYSQL\u RANDOM\u ROOT\u 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\u root\u pw”和“mysql\u pw”现在存在于swarm环境中。通过以下方式进行验证:

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\u PASSWORD\u FILE”和“MYSQL\u ROOT\u PASSWORD\u FILE”不是MYSQL识别的标准环境变量,它仍然需要“MYSQL\u ROOT\u PASSWORD”环境变量

我用的是Docker 17.03

有什么建议吗


谢谢。

如果您的密码也是空字符串,则会出现此错误。这就是发生在我身上的事情,安装了secret并正确配置了服务,但仍然失败,因为没有密码。

实际上,您自己给出了初始问题的答案。你还有其他问题吗?嘿,我刚刚测试了这个(不完全是这篇文章中的
docker服务create
),得到了与你看到的相同的错误。读完这篇文章后,我在结尾看到了一个通知,通知用户需要更新图像以考虑秘密。我查看了mysql映像添加支持的日期,发现它是。我的本地映像比这个旧,所以我运行了
docker-pull-mysql:latest
,得到了一个最近的映像。重新运行命令并启动:)感谢您的回复。非常有趣!几周前,我刚刚安装了我的主机(Ubuntu 16.04)(没有下载Docker映像),安装了Docker 17.03,并运行了“Docker stack deploy…”在我的docker-compose.yml文件中有以下内容:
services:mysql:image:mysql/mysql服务器:5.7.17
,所以它应该在几周前就已经删除了最新的5.7.17映像。当我使用docker image ls时,它显示“存储库”为“mysql/mysql服务器”,而“标记”为“mysql/mysql服务器”。我将找出如何下拉特定的5.7.17 mysql映像并让您知道。出于某种原因,映像“mysql/mysql服务器:5.7.17”至少对我来说固定在以下摘要中:“摘要:sha256:083F7EF16586208DCE7275C84D7D7085E1ACAF2CAF2D044E8827D191296099C”。如果我检查图像(
docker inspect
),它会显示“已创建”:“2017-02-16T07:06:16.474620534Z”。我会看看是否能找到包含“_文件”秘密修复的图像的摘要,并尝试通过该摘要提取mysql…William,成功了。我实际上使用的是mysql/mysql服务器:5.7.17映像,而不是mysql:5.7.17。您的回答帮助我解决了我的问题,因此,如果您重新发布上述回复,并在末尾添加“尝试使用‘mysql:5.7.17’图像,而不是‘mysql/mysql server:5.7.17’图像,因为Docker secrets增强功能可能只添加到了前者中”,我会将其标记为正确答案,并为您评分。再次感谢你的帮助。现在我只需要弄清楚如何让Docker机密在“drupal”容器中工作再次感谢!