2016-04-26 7 views
1

Ich versuche, eine grundlegende Entwicklungsmaschine mit php7, nginx und mariaDB, mit docker-compose zu erstellen.Docker komponieren Verknüpfung zu mariaDB

Die abgespeckte Version meiner compose Datei ist wie folgt:

wwwroot: 
container_name: wwwroot 
image: wwwroot 
volumes: 
    - .:/var/www 
restart: always 
nginx: 
container_name: nginx 
image: nginx 
links: 
    - php70 
volumes_from: 
    - wwwroot 
ports: 
    - "80:80" 
    - "443:443" 
restart: always 
php70: 
container_name: php70 
image: kreable/php70 
volumes_from: 
    - wwwroot 
links: 
    - mariadb 
restart: always 
mariadb: 
container_name: mariadb 
image: mariadb 
environment: 
    DB_ADMIN_PASS: pass 
ports: 
    - "3306:3306" 
restart: always 

Das funktioniert gut und erzeugt die gewünschten Behälter. Das Problem kommt mit dem Versuch, ein einfaches PHP-Skript mit der Datenbank zu verbinden. Ich habe immer bekommen:

SQLSTATE[HY000] [2002] Connection refused

Meine PHP-Anwendung ist in der wwwroot Behälter.

Muss ich noch weitere Einstellungen vornehmen, damit meine PHP-Anwendung sich mit dem mariaDB-Container verbinden kann?

Danke.

Antwort

0

in Ihrem Code suchen, haben Sie Setup einen Link von php70 zum mariadb Container, aber Sie haben nicht eine in der wwwroot Behälter. Wenn Sie versuchen, eine Verbindung von Ihrem wwwroot-Container herzustellen, müssen Sie von dort aus auch einen Link zu mariabb hinzufügen. Oder es sieht so aus, als ob du wahrscheinlich eine Verbindung zu deinem php70 Container herstellen möchtest.

Es kann auch gut sein, den PHP-Code zu zeigen, den Sie verwenden, um eine Verbindung zu Mariadb herzustellen, die den Fehler verursacht.

+0

Das PHP-Skript ist eine einfache 'PDO'-basierte Verbindung. Ich versuche eine Verbindung zu '127.0.0.1' mit' root' und 'pass' als Benutzernamen/Passwort herzustellen. – user1970557

+0

Können Sie dieses Code-Snippet zu Ihrer Frage hinzufügen, so wird es einfacher zu sehen, ob Sie einen Fehler in diesem Code haben. Außerdem sollten Sie nicht versuchen, sich mit '127.0.0.1' zu verbinden, Sie sollten versuchen, sich mit' mariadb' zu verbinden, da localhost den Container nicht verlassen kann und docker einen DNS-Alias ​​namens mariadb erstellt, der verlinkt zum Mariadb-Behälter. Stellen Sie außerdem sicher, dass Sie den richtigen Port 3306 verwenden. –