Является ли ваш файл PHP внутри контейнером Docker или , работает ли он снаружи Docker, на хост-компьютере?
Если этозапуск внутри контейнера Docker, в каком сервисе он находится? Обратите внимание, что служба nginx
не имеет конфигурации «links», то есть она обращается к базе данных только через имя хоста «database». Проверьте также порт (в конце этого поста).
Если ваш PHP-файл работает за пределами , то вы должны использовать localhost вместо mysql вваша строка подключения, вот так: 'mysql:host=localhost;dbname=mysql;charset=utf8'
. Это потому, что внутренний DNS докера - это просто: внутренний. Вы не можете получить доступ к этому имени хоста (базы данных или mysql) вне докера.
Не менее важно, что в строке подключения не указан порт, который в вашем случае равен 7052. Поскольку вы перенаправляете с 7052 на 3306, я думаю, что 3306 - это порт по умолчанию для mysql, а драйвер принимает значение 3306, если вы его не указали. Всегда полезно четко указывать хосты и порты. Проверьте документацию по строкам соединения PHP с данными (я ничего не знаю о php). Вероятно, это ...;port=7052
или что-то в этом роде.
Кроме того, прочитайте о docker-compose links
, который вы используете. Сейчас он устарел, поэтому я советую не использовать его в будущих проектах, даже советую потратить некоторое время на его удаление. Должно пройти от 30 секунд до 5 минут, если все идет хорошо, и это больше не будет вас преследовать.