Docker-Compose WordPress MySql无法连接

尝试连接到我的WordPress网站时出现502网关错误。 看着日志我有这个错误。

MySQL Connection Error: (1045) Access denied for user 'root'@'172.23.0.3' (using password: YES) 

这似乎工作,当我不改变密码,并保持所有的WordPress 。 我假设dockerfiles只是使用默认的密码,但看着他们后,我只能看到他们从环境中抓住。 但似乎并没有从我设定的环境中取得。

 version: '2' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: ***** MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: ***** wordpress: depends_on: - db image: wordpress:latest ports: - "8085:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: ****** volumes: db_data: 

我想要*****是相同的密码。

这里是我的wordpressvariables的转储:

 HOSTNAME=55333eceeda8 PHP_INI_DIR=/usr/local/etc/php PHP_ASC_URL=https://secure.php.net/get/php-5.6.30.tar.xz.asc/from/this/mirror WORDPRESS_DB_PASSWORD=test PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 PHP_MD5=68753955a8964ae49064c6424f81eb3e PHPIZE_DEPS=autoconf file g++ gcc libc-dev make pkg-config re2c PHP_URL=https://secure.php.net/get/php-5.6.30.tar.xz/from/this/mirror WORDPRESS_DB_HOST=db:3306 WORDPRESS_VERSION=4.7.2 PHP_LDFLAGS=-Wl,-O1 -Wl,--hash-style=both -pie APACHE_ENVVARS=/etc/apache2/envvars PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin GPG_KEYS=0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 PWD=/var/www/html SHLVL=1 HOME=/root PHP_SHA256=a363185c786432f75e3c7ff956b49c3369c3f6906a6b10459f8d1ddc22f70805 WORDPRESS_SHA1=7b687f1af589c337124e6247229af209ec1d52c3 APACHE_CONFDIR=/etc/apache2 PHP_EXTRA_BUILD_DEPS=apache2-dev PHP_VERSION=5.6.30 PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2 _=/usr/bin/env 

我在那里看到数据库密码。 这里是SQL的:

 root@50ec696f0f67:/# env HOSTNAME=50ec696f0f67 MYSQL_VERSION=5.7.17-1debian8 MYSQL_DATABASE=wordpress MYSQL_PASSWORD=test PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ SHLVL=1 HOME=/root MYSQL_MAJOR=5.7 GOSU_VERSION=1.7 MYSQL_USER=wordpress MYSQL_ROOT_PASSWORD=test _=/usr/bin/env 

我在这里看到两个密码。 所以出于某种原因,我的WordPress的容器被拒绝的MySQL容器。

警告:这是我的服务器上唯一的容器,所以我不介意删除所有内容。 盲目运行这些命令可以清除所有docker容器,卷等

我能够通过删除泊坞窗来解决我的问题。

即使你运行这个命令:

$ docker-compose stop && docker-compose rm -v

不会删除卷。

每次我尝试创build一个新的docker容器,它使用我旧的数据库存储我的旧mysql数据库与旧的mysql用户表,因此我的旧密码,我会改变,是错误的。

摆脱旧的docker卷使用:

docker volume rm $(docker volume ls -q )

将删除所有docker卷。 然后重build将使用envvariables的更新表创build一个新的卷。

一个工作的例子,修改你的docker组成:

变化:

build立WORDPRESS_DB_HOST

WORDPRESS_DB_HOST: foldername_db_1.foldername_default:3306

这似乎是docker-compose工作方式或mysql图像方式的最新变化,因为即使我只使用它。 找不到任何文档:(花了2天的时间来解决,希望这可以为您节省一些时间!