我的问题的简要总结:我的 docker-compose 的什么特征与 PDO 发生冲突,通过 PDO 阻止 Host -> mysql-docker,但允许来自所有其他工具的 Host -> mysql-docker?
我的应用程序的配置文件:
database:
host: mysql
port: 3306
name: <name>
username: <username>
password: <pass>
outsideContainerConnections:
host: 127.0.0.1
port: 3307
容器内一切正常,我可以在命令行上使用 PHPStorm 或 Mysql 从主机访问数据库。
如果我从主机运行此命令,它会连接
mysql --port=3307 -h 127.0.0.1 -u <username> -p
但是,如果我尝试使用 PDO 从主机上的 php 连接,则会失败
PDOException: SQLSTATE[HY000] [2002] 连接被拒绝
我尝试过的 PDO DSN:
mysql:host=127.0.0.1:3307;port=;dbname=<name>;&charset=utf8;
or
mysql:host=127.0.0.1;port=3307;dbname=<name>;&charset=utf8;
or
mysql:host=127.0.0.1:3307;dbname=<name>;&charset=utf8;
我已经阅读了有关使用 localhost 与 127.0.0.1 强制 TCP 的信息,我在这里这样做。
这也是我的 docker-composer 的相关部分。同样,使用主机中的命令行或其他工具可以正常工作,似乎只有 PDO 有问题。值得一提的是,docker-compose 网络中另一个容器上的 PDO 正在运行。
mysql:
build: './mysql_docker'
command: --lower_case_table_names=0
ports:
- '3307:3306'
volumes:
- ./volumes/mysql:/var/lib/mysql
- ./volumes/my.cnf:/etc/my.cnf
networks:
- app-tier
感谢您的阅读。
富国沪深
慕后森