Ne peut pas se connecter à MySQL docker conteneur créé via docker-composer

Je veux commencer avec docker et créé un simple conteneur de l'environnement avec une nginx conteneur, un PHP-FPM conteneur et une base de données MySQL contenant.

Alors que le lien entre la nginx et PHP-FPM conteneur fonctionne bien je n'arrive pas à lier le serveur d'application PHP avec le serveur de base de données.

- Je utiliser docker-composer afin de minimiser le manuel du terminal travail. Mon menu fixe-composer.yml ressemble à ceci:

web:
  image: tutorial/nginx
  ports:
    - "8080:80"
  volumes:
    - ./src:/var/www
    - ./src/vhost.conf:/etc/nginx/sites-enabled/vhost.conf
  links:
    - php
php:
  image: nmcteam/php56
  volumes:
    - ./src/php-fpm.conf:/etc/php5/fpm/php-fpm.conf
    - ./src:/var/www
  links:
    - db
db:
  image: sameersbn/mysql
  volumes:
   - /var/lib/mysql
  environment:
   - DB_NAME=demoDb
   - DB_USER=demoUser
   - DB_PASS=demoPass

Alors que j'essaie de me connecter à la bd avec la déclaration suivante:

$db = new \PDO('mysql:host=db;dbname=demoName', 'demoUser', 'demoPass');

La base de données MySQL contenant lui-même est de travail que je peux me connecter à l'conteneurs bash et utiliser le MySQL de la CLI:

mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| demoDb             |
| mysql              |
| performance_schema |
+--------------------+

Je viens d'obtenir une erreur 500 et ne peuvent pas trouver une raison pourquoi cela ne marcherait pas. Toute aide ou suggestion de ce que je pourrais avoir manqué est plus apprécié.

Votre chaîne de connexion doit être $db = new \PDO('mysql:host=localhost;dbname=demoName', 'demoUser', 'demoPass'); si la connexion locale sinon, vous devez exposer le port et l'utilisation de l'ip de la machine hôte. Relier les expose liés conteneur interne à l'application, il est lié. Vous ne pouvez pas faire référence en db, vous devez le référencer par localhost ou 127.0.0.1
merci pour l'effort. J'ai fait des observations sur la réponse que vous avez fournie.
êtes-vous de la connexion de la boîte de nginx?
Je ne suis pas sûr si je reçois votre question... Comme le serveur d'application PHP interprète tout mon code PHP il doit se connecter par le biais de ce conteneur. S'il vous plaît corrigez-moi si je me trompe ici.
Essayez ceci: $db = new \PDO('mysql:host=db;port=3306;dbname=demoDb', 'demoUser', 'demoPass'); Vous avez DB_NAME=demoDb mais sont la mise en 'mysql:host=db;dbname=demoName'. Changement qui, rebranchez-le et voyez si cela fonctionne. Je ne pense pas que c'est un Docker de la question, mais un code de problème.

OriginalL'auteur Mr.Moe | 2016-05-26