Назад | Перейти на главную страницу

Проблемы с контейнером Wordpress, настроенным для внешнего хоста базы данных

Я пытаюсь запустить контейнер 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.