2017-06-15 5 views
2

TL; DR: WordPress kann keine Verbindung zu MySQL herstellen, indem die folgende docker-compose-Konfiguration verwendet wird. Fehler beim Herstellen einer Datenbankverbindung. Warum?docker-compose - Verbindung zur MySQL-Datenbank nicht möglich

Ich verwende die folgende docker-compose.yml Datei, um eine LEMP-dev-Umgebung einzurichten.

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 

(ich manuell tun auch die folgenden php-mysql zu installieren)

// inside php (`docker-compose exec php sh`) 
docker-php-ext-install mysqli 

// back on my local machine 
docker restart <php's container id> 

Hinweis: Ich habe versucht, sowohl die Host-localhost & mysql für MySQL.

Antwort

1

Okay. Ich habs.

Ich hatte die MySQL-Umgebungsvariablen nach dem manuellen Erstellen einer Datenbank innerhalb der mysql Service hinzugefügt.

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

Ich bin nicht 100% sicher, warum, aber nach in ./mysql/data MySQL Daten zu löschen, tun docker-compose down und dann docker-compose up -d wieder (und php-mysqli mit docker-php-ext-install mysqli innerhalb des PHP-Dienst installieren), alles funktionierte.

Dann erschien der WordPress-Installationsbildschirm. Und nach der Installation ....... habe ich einen leeren weißen Bildschirm bekommen!

Nun, das ist, weil meine WordPress-Dateien nicht die Standardthemen enthalten.

Nachdem wir zu /wp-admin gegangen sind und ein Thema aktiviert haben, hat schließlich alles ... funktioniert.

Für Vollständigkeit, hier ist meine nginx config in ./nginx/config/default.conf befindet:

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