docker-compose wordpress mysql连接被拒绝

我已经创build了一个小型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/hostswordpress_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容器?

这种行为的原因可能与最近的内核和docker更新有关。 我在其他docker-compose设置中重新识别了其他几个连接问题。 因此,我重新启动服务器(不只是docker服务),从此以后就没有任何问题。

我正在使用你的docker-compose.yml,有同样的问题。 刚刚重新启动没有解决。 经过近一个小时的研究,我发现问题是: wordpress服务在启动之前开始连接mysql服务。 只需添加depends_on将无济于事。 Docker Compose在开始Y之前等待容器X.

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

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

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

 restart: unless-stopped 

这将确保您的数据库在WordPress的容器尝试连接到它之前开始和初始化。 然后重新启动泊坞窗引擎

 sudo restart docker 

或者(对于Ubuntu 15+)

 sudo service docker restart 

这里完整的configuration为我工作,以设置与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网站,包括phpmyadminjwilder/nginx-proxy作为控制器。

$ docker logs XXXX将有助于指出关注的领域。 在我的情况下,MariaDB数据库将始终保持重新启动。

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