无法连接到通过docker-compose创建的MySQL docker容器

Mr.*_*Moe 6 mysql docker docker-compose

我想开始使用docker并使用nginx容器,PHP-FPM容器和MySQL容器创建一个简单的容器环境.

虽然nginx和PHP-FPM容器之间的链接运行良好,但我似乎无法将PHP应用程序服务器与数据库服务器链接起来.

我使用docker-compose来最小化手动终端工作.我的docker-compose.yml看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下语句连接到DB:

$db = new \PDO('mysql:host=db;dbname=demoName', 'demoUser', 'demoPass');
Run Code Online (Sandbox Code Playgroud)

MySQL容器本身正在工作,因为我可以连接到容器bash并使用MySQL CLI:

mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| demoDb             |
| mysql              |
| performance_schema |
+--------------------+
Run Code Online (Sandbox Code Playgroud)

我只是得到一个500错误,并找不到为什么这不起作用的原因.任何对我可能错过的帮助或建议都不胜感激.

GHE*_*iLD 4

这不是 Docker 问题,而是代码问题:

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

它应该是:$db = new \PDO('mysql:host=db;port=3306;dbname=demoDb', 'demoUser', 'demoPass');