Краткое резюме моего вопроса: Какая характеристика c моего docker -компонента сталкивается с PDO, что предотвращает Host -> mysql - docker через PDO, но позволяет 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
Однако, если я пытаюсь подключиться с php на хосте с использованием PDO происходит сбой с
PDOException: SQLSTATE [HY000] [2002] Соединение отклонено
DSN DSO, которые я пробовал:
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 vs 127.0.0.1 для форсирования TCP, и я делаю это здесь.
Здесь также находится соответствующий раздел моего docker - composer. Опять же, используя командную строку или другие инструменты с хоста, все работает нормально, проблема заключается только в PDO. Что бы это ни стоило, PDO в другом контейнере в docker -композитной сети ведет себя.
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
Спасибо за чтение.