2017-08-17 4 views
3

J'essaye de lancer le phabricator comme image de docker. Le problème est que phabricator renvoie une page Cannot Find MySQL! lorsque je visite phabricator/webroot. Lorsque j'essaie de spécifier les paramètres mysql.host, mysql.port, mysql.user et mysql.pass, il semble toujours échouer.phabricator ne peut pas trouver mysql dockerized dans le conteneur php dockerized

EDIT: J'essaie ceci sur macOS "Sierra" avec docker-machine.

Je fais cela en séparant trois composantes:

  1. image nginx
  2. php-fpm l'image
  3. image mysql

L'image nginx et php-fpm image partager des données via le même volume. Plus précisément, je stocke les fichiers phabricateurs requis (phabricator, liphutil, arcanist), dans un répertoire data/dir. La structure de mon projet docker ressemble à ceci:

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

Le php_setup.conf est juste la configuration nginx requise pour le projet phabricator php, qui est copié dans le récipient de nginx.

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 

Je suis en mesure de telnet mysql 3306 hôte de l'image php-FPM, il est donc clairement disponible. Cependant, je ne suis pas sûr si ce problème se pose parce que j'ai les projets de phabricateurs sur un volume d'hôte, plutôt que dans le conteneur eux-mêmes. J'espère que quelqu'un peut me diriger dans la bonne direction.

erreur du journal fourni par phabricator sur demande:

Impossible d'établir une connexion à un hôte de base de données (tout en essayant « phabricator_config »). Tous les maîtres et les répliques sont complètement inaccessibles.

données/phabricator/conf/local/local.json

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

Quelle est la séquence de démarrage de ces conteneurs? pouvez-vous essayer 'depends_on: mysql' pour votre service php? – Metaphox

+0

Collez votre phabricator_config –

+0

@TarunLalwani Je suppose que vous faites référence au fichier 'local.json' fourni pour la configuration (je l'ai ajouté ci-dessus). Le "phabricator_config" est une variable passée dans 'addPhabricatorConfig (...)' dans le code du phabricateur. Il en résulte une référence à 'mysql.host', etc ... – Puzzled

Répondre

0

Malgré le message d'erreur indiquant que phabricator ne peut pas se connecter/trouver MySQL, il se trouve que les autorisations accordées à l'utilisateur phabricator étaient trop restrictifs.

Solution: Accordez l'autorisation globale à l'utilisateur du phabreur.