docker-compose wordpress mysql连接拒绝

时间:2015-12-03 14:33:55

标签: wordpress docker mariadb docker-compose

我创建了一个小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

当我/etc/hosts wordpress_1时,有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容器?

6 个答案:

答案 0 :(得分:8)

此行为的原因可能与最近的内核和docker更新有关。我在其他docker-compose设置中认识到了其他一些连接问题。因此,我重新启动了服务器(不仅仅是docker服务),从那时起就没有任何类似的问题。

答案 1 :(得分:7)

要解决此问题,首先要做的是:

将以下代码添加到wordpress&数据库容器(在docker-compose文件中):

restart: unless-stopped

这将确保在wordpress容器尝试连接之前启动并初始化数据库。然后重启docker engine

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"

答案 2 :(得分:1)

我使用你的docker-compose.yml,遇到了同样的问题。刚刚重启没有解决。经过将近一个小时的日志研究,我发现问题是:wordpress服务在完全启动之前就开始连接mysql服务。简单地添加depends_on将无济于事。Docker Compose wait for container X before starting Y

可以在Up之前启动db服务器。完全启动后,运行docker-compose up。或者只是使用外部服务。

答案 3 :(得分:1)

我这里也有麻烦。我使用docker-compose在单个(微)虚拟专用服务器上设置多个wordpress网站,包括phpmyadminjwilder/nginx-proxy作为控制器。

$ docker logs XXXX将有助于表明您所关注的领域。就我而言,MariaDB数据库将一直不断重启。

事实证明,所有这些东西都不适合微型512M单CPU服务。我从未收到过直接告诉我大小是个问题的错误消息,但在添加完成后,我意识到当所有数据库都启动时,我的内存不足。升级到1Gb,1 CPU服务工作得很好。

答案 4 :(得分:1)

我遇到了几乎相同的问题,但是重新启动Wordpress容器救了我:

$ docker restart wordpress

希望这对很多人有帮助。

答案 5 :(得分:0)

就我而言,我使用的是Mysql(不是MariaDb),但是我遇到了同样的问题。 升级MySQL版本后,它可以正常工作。

您可以看到我的开源docker-compose配置:https://github.com/rimiti/wordpress-dockerized-environment