Код: Выделить всё
version: '3.8'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
command:
- --authentication_policy=mysql_native_password
ports:
- "3307:3306"
other-db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
command:
- --authentication_policy=mysql_native_password
ports:
- "3308:3306"
Код: Выделить всё
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb40137b211e mysql:8.0 "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:3307->3306/tcp, [::]:3307->3306/tcp throwaway-db-1
da92a7a412d9 mysql:8.0 "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:3308->3306/tcp, [::]:3308->3306/tcp throwaway-other-db-1
< /code>
Вывод LSOF -ITCP -STCP: Слушание -N -p | grep -e 3307 -e 3308
Код: Выделить всё
com.docke 51746 **** 146u IPv6 0xe5664b0e21a1657f 0t0 TCP *:3307 (LISTEN)
com.docke 51746 **** 162u IPv6 0xcb18455c9581f670 0t0 TCP *:3308 (LISTEN)
< /code>
Я пытаюсь подключиться к ним следующим образом: < /p>
[list]
[*] db: mysql -h localhost -p 3307 - -protocol = tcp -u root -p < /code> < /li>
worn -db: mysql -h localhost -p 3308 - -protocol romtocol romtocol romtocol -romtocol -romtoc -rom. -p
Однако я обнаружил, что, прерывистое, при запуске этой одной из двух баз данных будет висеть на неопределенном времени в команде CLI выше после ввода пароля. В других случаях это нормально. Так что я могу только предположить, что есть какое-то условие гонки. < /P>
Если я определяю aeplends_on Block между двумя базами данных, добавив это в другие DB: < /p>
depends_on:
- db
< /code>
Это работает просто отлично. Конечно, на практике я не хочу этого делать, поскольку это не имеет смысла (это всего лишь минимальный пример, демонстрирующий проблему, реальные файлы с композитом докеров более сложны). < /P>
Я проверил здоровье контейнера MySQL, все журналы выглядят правильно и здоровы. Я могу подключиться изнутри контейнеров просто отлично. Если я включаю общее ведение журнала, я даже не вижу соединения от хоста, попавшего в контейнер, поэтому я предполагаю, что что -то сломается на уровне сети Docker. MacOS Sequoia 15.5 (на MacBook Pro, M4) < /li>
Docker: 28.1.1-rd < /li>
Docker Compose: 2.36.2 < /li>
< /ul>
Что мне здесь не хватает? Из моего понимания Docker/Docker составлена, моя настройка верна. Мои контейнеры находятся в одной сети Docker, с различными именами услуг (приводящих к отдельным записям DNS), различным IPS. Они разоблачают разные порты хозяину. Почему здесь есть какое -то странное состояние гонки? Как я могу диагностировать дальше?
Подробнее здесь: https://stackoverflow.com/questions/796 ... connection