Я пытаюсь запустить контейнер Wordpress, настроенный на использование внешнего сервера базы данных MySQL, например:
docker run --name wordpress1 -p 801:80 -e WORDPRESS_DB_HOST=MYDBSERVERIPADDRESS:3306 -e WORDPRESS_DB_USER=username -e WORDPRESS_DB_PASSWORD=password -e WORDPRESS_DB_NAME=dbname -it wordpress
Однако при этом я получаю эту ошибку:
Ошибка подключения MySQL: (1045) Доступ запрещен для 'username' @ 'WRONGIPADDRESS' (с использованием пароля: YES)
Проблема в том, что он использует IP-адрес хоста контейнера (который я указал как WRONGIPADDRESS), а не IP-адрес, который я указал с помощью параметра WORDPRESS_DB_HOST - он по сути полностью игнорирует параметр WORDPRESS_DB_HOST.
Есть идеи, почему это происходит? Предполагается, что это полностью поддерживаемый параметр -e для очень популярного контейнера Wordpress, поэтому мы будем благодарны за любую помощь, которую вы можете предоставить.
По умолчанию внутренний Docker bridge
сеть, в docker0
интерфейс, использует NAT для связи с хостами за пределами хоста контейнера. Таким образом, внешние хосты видят IP-адрес хоста контейнера, а не отдельного контейнера. Адрес, который вы называете «неправильным», на самом деле является ожидаемым адресом, потому что ваш сервер MySQL не работает в другом контейнере Docker на хосте, а находится вне его. Вы должны исправить IP-адрес пользователя в таблице пользователей MySQL.