使用Docker Compose设置WordPress + MySQL-'建立数据库连接时出错'

时间:2018-11-27 04:01:07

标签: mysql wordpress docker docker-compose

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

好的,我通过降级到MySQL 5.7来解决了这个问题(我在文章中提到了该版本,但当时我遇到了其他错误)。现在一切都按预期进行。似乎与this问题有关。