【问题标题】:docker-compose - Can't connect to MySQL databasedocker-compose - 无法连接到 MySQL 数据库
【发布时间】:2017-11-18 07:55:36
【问题描述】:

TL;DR:WordPress 无法使用以下 docker-compose 配置连接到 MySQL。 建立数据库连接时出错。为什么?

我正在使用以下 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>

注意:我尝试将 localhostmysql 用于 MySQL 的主机。

【问题讨论】:

    标签: php mysql wordpress docker docker-compose


    【解决方案1】:

    好的。明白了。

    我在mysql 服务中手动创建数据库后添加了 MySQL 环境变量。

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

    我不是 100% 确定为什么,但是在删除 ./mysql/data 中的 MySQL 数据后,执行 docker-compose down,然后再次执行 docker-compose up -d(并在 PHP 服务中安装 php-mysqli 和 docker-php-ext-install mysqli),一切正常.

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

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

    在转到/wp-admin 并激活一个主题后,一切终于...工作了。

    为了完整起见,这是我位于 ./nginx/config/default.conf 的 nginx 配置:

    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;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 2019-11-06
      • 2021-06-16
      • 1970-01-01
      • 2017-07-05
      相关资源
      最近更新 更多