docker-compose – 无法连接到MySQL数据库

TL; DR:WordPress无法使用下面的docker-composeconfiguration连接到MySQL。 build立数据库连接时出错。 为什么?

我正在使用以下docker-compose.yml文件来设置LEMP开发环境。

docker-compose.yml

 version: '3' services: nginx: image: nginx ports: - '8080:80' volumes: - ./nginx/config/default.conf:/etc/nginx/conf.d/default.conf - ../wordpress:/var/www/wordpress - ./nginx/log:/var/log/nginx depends_on: - php php: image: php:fpm ports: - 9000:9000 volumes: - ../wordpress:/var/www/wordpress depends_on: - mysql mysql: image: mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: ado MYSQL_USER: ado MYSQL_PASSWORD: secret volumes: - ./mysql/data:/var/lib/mysql 

(我也手动做下面的安装php-mysql

 // inside php (`docker-compose exec php sh`) docker-php-ext-install mysqli // back on my local machine docker restart <php's container id> 

注意:我尝试使用MySQL的主机localhost和MySQL。

好的。 得到它了。

在手动创buildmysql服务中的数据库之后,我添加了MySQL环境variables。

  MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: ado MYSQL_USER: ado MYSQL_PASSWORD: secret 

我不是100%确定为什么,但是删除./mysql/data MySQL数据之后, ./mysql/data docker-compose down然后./mysql/data docker-compose down再加docker-compose up -d (并且用./mysql/data docker-php-ext-install mysqli在PHP服务里面),一切正常。

然后,WordPress的安装屏幕出现了。 安装后…….我有一个空白的白色屏幕!

那么,那是因为我的WordPress文件没有包含默认主题。

/wp-admin和激活一个主题后,一切终于…工作。

为了完整,这里是我的nginxconfiguration位于./nginx/config/default.conf

 server { listen 80 default_server; listen [::]:80 default_server; root /var/www/wordpress; index index.php index.html; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; } location ~* /(?:uploads|files)/.*\.php$ { deny all; } location / { try_files $uri $uri/ /index.php?$args; } rewrite /wp-admin$ $scheme://$host$uri/ permanent; location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; } }