Я создал контейнер MySQL из образа, нашел его IP-адрес, но не смог подключиться из командной строки или mysqlworkbench. Вот моя конфигурация.
Докерфайл
FROM mysql
ENV MYSQL_DATABASE=test
ENV MYSQL_ROOT_PASSWORD=password
COPY ./schema.sql /docker-entrypoint-initdb.d/
Команда
docker build -t mysql-image .
&& docker run
-p 6603:3306
--name mysql-container
mysql-image
Я вижу, что контейнер запускается из docker container ls
. Я нашел его IP-адрес с помощью этой команды с помощью этого отвечать.
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-container
Он дал мне этот ip -> 172.17.0.2
Ошибка
Редактировать
Связанный повторяющийся тег не является решением, проблема заключается в следующей команде, которая ввела меня в заблуждение.
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-container
У меня нет phpmyadmin, мой env - nodejs
да localhost работал, на самом деле 127.0.0.1
Возможный дубликат Как подключить рабочую среду mysql к запуску mysql внутри докера?
Я думаю, вам понадобится phpmysql, чтобы увидеть интерфейс mysql... если нет, то проверьте номер порта mysql (по умолчанию 3306), поэтому в вашем случае попробуйте 127.0.0.1:3306
Я использовал 127.0.0.1:6603
вместо 172.17.0.2:6603
, и это сработало. Связанный ответ, чтобы найти IP-адрес БД, на самом деле ввел меня в заблуждение.
Вам нужно использовать localhost
(127.0.0.1) вместо IP-адреса контейнера (в вашем случае 172.17.0.2) в hostname
почему это так, в учебнике, которому я следовал, в качестве IP-адреса использовалось 172, и это сработало для него, но для меня сработало 127, интересно, почему? и что я должен указать в производственном коде для подключения к БД?
Здесь у вас есть объяснение по этому поводу, stackoverflow.com/questions/24319662/… (в конце ответа)
так что в основном 127 - это режим хоста, а 172 - режим моста?
Что-то в этом роде, я еще не эксперт в докере, и я не могу сказать да, но похоже на то.
Ваш phpmyadmin работает? проверьте это на localhost:вашMySQLportNumber