Docker Wordpress容器在约30秒后退出

时间:2015-06-09 19:36:22

标签: mysql wordpress docker

我是使用Docker的新手,目前我正在尝试使用Wordpress Docker容器和MySQL数据库在本地创建一个Wordpress网站(注意:我也是MySQL新手)。 MySQL数据库没有在容器中运行,但我更愿意在我的机器上创建自己的本地数据库。

当我尝试使用此命令创建Wordpress容器时:

sudo docker run --name wordpress_local -e WORDPRESS_DB_HOST=localhost -e WORDPRESS_DB_USER=test -e WORDPRESS_DB_PASSWORD=password -d wordpress

容器运行正好27秒,然后退出。

我不确定这是因为它无法连接到我的数据库,但是,当我创建链接到MySQL 容器的Wordpress容器时,我没有这个问题。 设置我的数据库的步骤:

  • 在我的机器上安装了MySQL服务器和客户端
  • 创建了一个名为test @ localhost的用户,并为其提供了密码
  • 授予此用户所有wordpress权限

任何帮助将不胜感激!

编辑:

容器的日志如下所示:

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on                  line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on   line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10

MySQL Connection Error: (2002) No such file or directory

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 

编辑2:

运行sudo docker events --filter wordpress_local会产生:

2015-06-10T13:57:11.000000000Z e9000a3a085731d527f0e64a26f681126f5885f9ef0d4a845361d581ae2d111a: (from wordpress:latest) die

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 Docker提供两种网络模式:网桥和主机。

网桥模式是默认的,当使用此模式时,MySQL必须正在侦听Docker主机IP地址(172.17.42.1)上的连接。换句话说,MySQL配置文件中的bind-address必须设置为:172.17.42.1

我的解决方案是通过在我的命令中添加--net="host"标志来使用主机网络模式。这允许我从容器连接到localhost,并允许我保留127.0.0.1作为我的MySQL绑定地址。正确的命令如下所示。

sudo docker run --name wordpress_local --net="host" -e WORDPRESS_DB_HOST=127.0.0.1 -e WORDPRESS_DB_USER=test -e WORDPRESS_DB_PASSWORD=password -d wordpress

编辑:值得注意的是,这不是一种非常安全的方法,因为它允许容器访问本地网络服务。一种更好的方法是破坏数据库灵活性并将其绑定到Docker主机,或允许数据库接受来自所有服务的连接,并使用防火墙过滤掉不需要的访问。