docker-compose wordpress mysql 连接被拒绝
docker-compose wordpress mysql connection refused
我创建了一个小型的 docker-compose.yml
,它曾经非常适合部署小型 WordPress 实例。它看起来像这样:
wordpress:
image: wordpress:latest
links:
- mysql
ports:
- "1234:80"
environment:
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: "password"
WORDPRESS_DB_HOST: mariadb
MYSQL_PORT_3306_TCP: 3306
volumes:
- /srv/wordpress/:/var/www/html/
mysql:
image: mariadb:latest
mem_limit: 256m
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: "password"
volumes:
- /srv/mariadb:/var/lib/mysql
但是当我现在启动它时(可能因为 docker 更新到 Docker 版本 1.9.1,构建 a34a1d5
),它失败了
wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
wordpress_1 |
wordpress_1 | MySQL Connection Error: (2002) Connection refused
当我 cat wordpress_1
的 /etc/hosts
时,有条目 MySQL:
172.17.0.10 mysql 12a564fdbc56 mariadb
并且我能够 ping 通 MariaDB 服务器。
当我 docker-compose up
时,安装了 WordPress,并在多次重启后 MariaDB 容器打印:
Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
应该是运行,对吧?
如何让 WordPress 能够连接到 MariaDB 容器?
此行为的原因可能与最近的内核和 docker 更新有关。我在其他 docker-compose 设置中发现了其他几个连接问题。因此我重新启动了服务器(不仅仅是 docker 服务)并且从那以后就没有遇到过任何这样的问题。
我用的是你的docker-compose.yml,遇到了同样的问题。只是重新启动并没有解决。查了将近一个小时的日志,发现问题是: wordpress
服务在完全启动之前就开始连接 mysql
服务。简单地添加 depends_on 不会有帮助。
解决方法是在 Up 之前启动 db
服务器。当它完全启动时,运行 docker-compose up
。或者只使用外部服务。
要解决此问题,首先要做的是:
将以下代码添加到 wordpress 和数据库容器(在 docker-compose 文件中):
restart: unless-stopped
这将确保您的数据库在 wordpress 容器尝试连接到它之前启动并初始化。然后重启docker引擎
sudo restart docker
或(对于 ubuntu 15+)
sudo service docker restart
这里是对我有用的完整配置,用于使用 MariaDB 设置 wordpress:
version: '2'
services:
wordpress:
image: wordpress:latest
links:
- database:mariadb
environment:
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_NAME=mydbname
- WORDPRESS_TABLE_PREFIX=ab_
- WORDPRESS_DB_PASSWORD=password
- WORDPRESS_DB_HOST=mariadb
- MYSQL_PORT_3306_TCP=3306
restart: unless-stopped
ports:
- "test.dev:80:80"
working_dir: /var/www/html
volumes:
- ./wordpress/:/var/www/html/
database:
image: mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=mydbname
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=password
restart: unless-stopped
ports:
- "3306:3306"
我在这里也遇到了麻烦。我使用 docker-compose 在单个(微型)虚拟专用服务器上设置多个 wordpress 网站,包括 phpmyadmin
和 jwilder/nginx-proxy
作为控制器。
$ docker logs XXXX
将有助于指出关注的领域。在我的例子中,MariaDB 数据库会一直重启。
事实证明,所有这些东西都不适合微型 512M 单一 CPU 服务。我从未收到过直接告诉我大小有问题的错误消息,但在将所有内容加起来后,我意识到当所有数据库都启动时,我 运行 内存不足。升级到 1Gb,1 CPU 服务效果很好。
就我而言,我使用的是 Mysql(不是 MariaDb),但我遇到了同样的问题。
升级MySQL版本后,一切正常
可以看我开源的docker-compose配置:https://github.com/rimiti/wordpress-dockerized-environment
我遇到了几乎相同的问题,但只是重新启动 Wordpress 容器救了我:
$ docker restart wordpress
我希望这对很多人有帮助。
这仅表示您尝试连接到错误的主机。为了在本地主机中使用它,只需使用您的服务名称作为您的数据库主机示例,它将是 mysql
您可以通过使用这样的默认变量指定本地主机的名称来解决此问题 MYSQL_ROOT_HOST: localhost
我创建了一个小型的 docker-compose.yml
,它曾经非常适合部署小型 WordPress 实例。它看起来像这样:
wordpress:
image: wordpress:latest
links:
- mysql
ports:
- "1234:80"
environment:
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: "password"
WORDPRESS_DB_HOST: mariadb
MYSQL_PORT_3306_TCP: 3306
volumes:
- /srv/wordpress/:/var/www/html/
mysql:
image: mariadb:latest
mem_limit: 256m
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: "password"
volumes:
- /srv/mariadb:/var/lib/mysql
但是当我现在启动它时(可能因为 docker 更新到 Docker 版本 1.9.1,构建 a34a1d5
),它失败了
wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
wordpress_1 |
wordpress_1 | MySQL Connection Error: (2002) Connection refused
当我 cat wordpress_1
的 /etc/hosts
时,有条目 MySQL:
172.17.0.10 mysql 12a564fdbc56 mariadb
并且我能够 ping 通 MariaDB 服务器。
当我 docker-compose up
时,安装了 WordPress,并在多次重启后 MariaDB 容器打印:
Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
应该是运行,对吧?
如何让 WordPress 能够连接到 MariaDB 容器?
此行为的原因可能与最近的内核和 docker 更新有关。我在其他 docker-compose 设置中发现了其他几个连接问题。因此我重新启动了服务器(不仅仅是 docker 服务)并且从那以后就没有遇到过任何这样的问题。
我用的是你的docker-compose.yml,遇到了同样的问题。只是重新启动并没有解决。查了将近一个小时的日志,发现问题是: wordpress
服务在完全启动之前就开始连接 mysql
服务。简单地添加 depends_on 不会有帮助。
解决方法是在 Up 之前启动 db
服务器。当它完全启动时,运行 docker-compose up
。或者只使用外部服务。
要解决此问题,首先要做的是:
将以下代码添加到 wordpress 和数据库容器(在 docker-compose 文件中):
restart: unless-stopped
这将确保您的数据库在 wordpress 容器尝试连接到它之前启动并初始化。然后重启docker引擎
sudo restart docker
或(对于 ubuntu 15+)
sudo service docker restart
这里是对我有用的完整配置,用于使用 MariaDB 设置 wordpress:
version: '2'
services:
wordpress:
image: wordpress:latest
links:
- database:mariadb
environment:
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_NAME=mydbname
- WORDPRESS_TABLE_PREFIX=ab_
- WORDPRESS_DB_PASSWORD=password
- WORDPRESS_DB_HOST=mariadb
- MYSQL_PORT_3306_TCP=3306
restart: unless-stopped
ports:
- "test.dev:80:80"
working_dir: /var/www/html
volumes:
- ./wordpress/:/var/www/html/
database:
image: mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=mydbname
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=password
restart: unless-stopped
ports:
- "3306:3306"
我在这里也遇到了麻烦。我使用 docker-compose 在单个(微型)虚拟专用服务器上设置多个 wordpress 网站,包括 phpmyadmin
和 jwilder/nginx-proxy
作为控制器。
$ docker logs XXXX
将有助于指出关注的领域。在我的例子中,MariaDB 数据库会一直重启。
事实证明,所有这些东西都不适合微型 512M 单一 CPU 服务。我从未收到过直接告诉我大小有问题的错误消息,但在将所有内容加起来后,我意识到当所有数据库都启动时,我 运行 内存不足。升级到 1Gb,1 CPU 服务效果很好。
就我而言,我使用的是 Mysql(不是 MariaDb),但我遇到了同样的问题。 升级MySQL版本后,一切正常
可以看我开源的docker-compose配置:https://github.com/rimiti/wordpress-dockerized-environment
我遇到了几乎相同的问题,但只是重新启动 Wordpress 容器救了我:
$ docker restart wordpress
我希望这对很多人有帮助。
这仅表示您尝试连接到错误的主机。为了在本地主机中使用它,只需使用您的服务名称作为您的数据库主机示例,它将是 mysql
您可以通过使用这样的默认变量指定本地主机的名称来解决此问题 MYSQL_ROOT_HOST: localhost