我正在尝试使用Docker Compose在本地设置WordPress + MySQL,并且不断收到臭名昭著的“建立数据库连接时出错”错误。我在运行Mojave的Mac上,并将127.0.0.1映射到mysite.local
下的/etc/hosts
。以下是我的docker-compose.yml(显然是“ mysite”,密码条目是替换项):
version: '3'
services:
mysite-wp-db:
image: mysql:latest
volumes:
- ./db/initdb.d:/docker-entrypoint-initdb.d
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: wordpress
MYSQL_USER: some_user
MYSQL_PASSWORD: pwd
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: mysite-wp-db
MYSQL_ROOT_PASSWORD: root_pwd
PMA_ABSOLUTE_URI: http://mysite.local/
ports:
- "8080:80"
restart: always
depends_on:
- mysite-wp-db
mysite-wp:
depends_on:
- mysite-wp-db
image: wordpress:latest
restart: always
expose:
- "80"
environment:
- VIRTUAL_PORT=80
- VIRTUAL_HOST=mysite.org,mysite.com,mysite.local
volumes:
- ./wp:/var/www/html
networks:
default:
external:
name: mysite-nginx-proxy
我正在使用流行的jwilder / nginx-proxy容器运行它。您还可以看到我也在运行phpmyadmin,并且运行良好-我可以使用在compose文件中指定的密码登录,并且可以看到数据库名称正确,并且从{ {1}}。另外./db/initdb.d
告诉我wp卷已安装到容器中,并且wp-config.php文件在那里。最初,我只是安装wp-contents文件夹,但是即使安装整个wp文件夹也给我同样的错误。我还尝试了各种版本的mySQL(5.6、5.7,最新)。都给出相同的错误。非常令人沮丧。
更令人沮丧的是,几个月前我已经完成了所有这些工作。它实际上是第一次工作。尽管现在有更多内容,但是什么都没有真正改变,所以db dump文件要大得多(约14MB)。我可能做错了什么?
如果我访问mysite.local,则会收到“建立数据库连接时出错”。如果我访问mysite.local / wp /,则会收到Apache“内部服务器错误”
N.B:该站点的最初开发发生在AMPPS WordPress安装下的127.0.0.1。我只是将数据库导出到转储文件中,然后将所有出现的127.0.0.1更改为docker exec -it <container_id> bin/bash
。
更新:将mysite.local
设置为WP_DEBUG
会给我以下浏览器错误消息:
警告:mysqli_real_connect():服务器请求身份验证 客户端[caching_sha2_password]中未知的方法 /var/www/html/wp-includes/wp-db.php,第1531行
这就是wp-includes / wp-db.php中1530-33行的内容:
true