【问题标题】:Docker Wordpress Container Exits after ~30 secondsDocker Wordpress 容器在约 30 秒后退出
【发布时间】:2015-08-24 19:35:36
【问题描述】:

我是使用 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 container 的 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

【问题讨论】:

  • docker logs wordpress_local 说什么?
  • 另外,您希望 MySQL 在同一个容器中是否有特殊原因?我们只是假装我们在同一个房间,所以我可以说:这是美国,随心所欲,但将 MySQL 容器与 WordPress 容器分开可能是个好主意。我在组合它们时遇到了麻烦,将它们分离到不同的容器中被认为是最佳实践,并且在安装时也给我带来了更少的问题。
  • 我已经添加了 docker 日志(仍在试图弄清楚如何格式化它)。另外,@ L0j1k,如果我不清楚,我深表歉意。我的数据库将与 Docker 完全分离——它与 Docker 安装在同一台机器上
  • 可以显示docker events
  • 当然@user2915097。由于我是 MySQL 新手,我只是假设我的问题是用于创建我的 wordpress 实例的命令中的一个简单错误(即使用了错误的用户名/主机名)。我的命令看起来还好吗?

标签: mysql wordpress docker


【解决方案1】:

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

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

我的解决方案是通过在我的命令中添加--net="host" 标志来使用主机网络模式。这允许我从我的容器连接到本地主机,并允许我保留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 主机,或者允许数据库接受来自所有服务的连接,并使用防火墙过滤掉不需要的访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 2021-03-12
    • 2021-04-08
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多