gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:38:31 60 4
gpt4 key购买 nike

我想开始使用 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

当我尝试使用以下语句连接到数据库时:

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

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

mysql> show databases;

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

我只是收到一个 500 错误,但找不到这不起作用的原因。对于我可能错过的任何帮助或建议,我们将不胜感激。

最佳答案

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

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

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

关于mysql - 无法连接到通过 docker-compose 创建的 MySQL docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37463543/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com