Решение
Я заметил, что вы не сопоставляете порт контейнера mysql. Если вы это сделаете, вы увидите это из команды docker ps
:
... 0.0.0.0:3306->3306/tcp network_mysql

Контейнер network_mysql
подключен к сети мостового типа, которая называется tmp_wex_net
. Это означает, что контейнер недоступен для хоста по имени контейнера.
Похоже, вы используете для стека определение docker-compose.yml. Чтобы иметь возможность доступа к контейнеру с хоста, вам нужно использовать раздел ports
в определении составления для этого контейнера:
serivces:
mysql:
...
ports:
- "3306:3306"
...
Если вы начинаете с docker run
, то вы можете выполнить то же самое с:
docker run -p 3306:3306 --name network_mysql --network="tmp_wex_net" -d mysql
И затем используйте localhost
в имени хоста настроек вашего соединения в PHPStorm. Как это:
Host : localhost
Порт : 3306
База данных : сеть
Проблема
Причина, по которой вы не можете подключиться, заключается в том, что имя хоста network_mysql
, указанное вами в настройках соединения, не разрешается ни на один хост, о котором ваши машины знают.
Имя контейнера Docker-контейнера не является DNS-именем, которое может разрешать Docker-узел.
Если вы не указали никакой сети для своего контейнера mysql, то он подключен к мостовой сети по умолчанию. И если вы создали новую сеть, не указав тип - по умолчанию также будет использоваться драйвер моста.
Чтобы получить доступ к контейнеру с хоста, вам необходимо:
- Подключить контейнер к сети хоста
- Или из контейнера в мостовой сети сопоставьте порт с хостом, как предложено в приведенном выше решении. Затем вы можете обратиться к специально назначенному порту в этом контейнере с помощью
localhost:<portnum>
с хост-компьютера.