2017-08-17 5 views
3

Ich versuche, fabricator als docker image zu starten. Das Problem ist, dass der Fabricator eine Cannot Find MySQL! Seite zurückgibt, wenn ich fabricator/webroot besuche. Wenn ich versuche, die mysql.host, mysql.port, mysql.user und mysql.pass Parameter zu spezifizieren, scheint es immer noch zu versagen.fabricator kann dockerized mysql in dockerized php container nicht finden

EDIT: Ich versuche dies auf MacOS "Sierra" mit Docker-Maschine.

ich diese drei Komponenten durch Abtrennen tun:

  1. nginx Bild
  2. php-fpm Bild
  3. mysql Bild

Die nginx Bild und php-fpm Bild teilen Daten über das gleiche Volumen. Genauer gesagt, speichere ich die benötigten Dateien (Fabrizierer, Liphutil, Arkanist) in einem Daten/Verzeichnis. Die Struktur meiner Docker Projekt sieht wie folgt aus:

docker-project/ 
    - docker-compose.yml 
    - php_setup.conf 
    + data/ 
     + phabricator/ 
     + arcanist/ 
     + liphutil/ 
    + nginx/ 
     - Dockerfile 
    + php-fpm/ 
     - Dockerfile 

Die php_setup.conf ist nur die erforderliche nginx-Konfiguration für das Phabricator PHP-Projekt, das in den nginx Container kopiert wird.

Docker-compose.yml

version: "2" 
services: 
    web: 
    build: 
     context: . 
     dockerfile: nginx/Dockerfile 
    ports: 
     - "80:80" 
    volumes: 
     - ./data:/srv 
    php: 
    build: 
     context: . 
     dockerfile: php-fpm/Dockerfile 
    volumes: 
     - ./data:/srv 
    mysql: 
    image: mysql 
    environment: 
     - MYSQL_ALLOW_EMPTY_PASSWORD=yes 
     - MYSQL_USER=phabricator 
     - MYSQL_PASSWORD=12345 

Ich bin in der Lage zu telnet mysql 3306 Host aus dem php-fpm Bild, so ist es klar vorhanden. Ich bin mir jedoch nicht sicher, ob dieses Problem auftritt, weil ich die Fabricator-Projekte auf einem Host-Volume und nicht im Container selbst habe.

Ich hoffe, dass jemand mich in die richtige Richtung zeigen kann.

Protokollfehler von Phabricator auf Anfrage:

Es kann keine Verbindung zu einem Datenbank-Host etablieren (während "phabricator_config" versuchen). Alle Master und Replikate sind völlig unerreichbar.

Daten/Phabricator/conf/local/local.json

{ 
    "mysql.port": "3306", 
    "mysql.pass": "12345", 
    "mysql.user": "phabricator", 
    "mysql.host": "mysql" 
} 
+0

Wie lautet die Startsequenz dieser Container? Kannst du 'depends_on: mysql' für deinen PHP-Dienst versuchen? – Metaphox

+0

Paste your phabricator_config –

+0

@TarunLalwani Ich nehme an, Sie beziehen sich auf die 'local.json' Datei für die Konfiguration zur Verfügung gestellt (ich habe es oben hinzugefügt). Der "fabricator_config" ist eine Variable, die in 'addPhabricatorConfig (...)' im Phabricator-Code übergeben wird. Es führt zu einem Verweis auf mysql.host, etc ... – Puzzled

Antwort

0

Trotz der Fehlermeldung, dass Phabricator sagen kann keine Verbindung/finden MySQL, es stellt sich heraus, dass die Berechtigungen für den Benutzer phabricator gewährt waren zu restriktiv.

Lösung: Gewähren Sie dem Benutzer des fabbricator globale Berechtigung.

Verwandte Themen