Сервер во внутренней сети в Docker
Внутренняя сеть проекта даёт доступ к серверу только соседним контейнерам, без порта на компьютере. Снаружи к базе по номеру порта не попасть: связь идёт по имени сервиса внутри описания.
Сеть inside помечена
как внутренняя.
Сервис db без портов
получает пароль demo.
Сервис client на том же
образе ждёт в фоне:
networks:
inside:
internal: true
services:
db:
image: mysql:9.7
environment:
MYSQL_ROOT_PASSWORD: demo
networks:
- inside
client:
image: mysql:9.7
command: ["sleep", "300"]
networks:
- inside
Фоновый подъём проекта выполняют так:
docker compose up -d
Запрос из соседней копии
идёт на имя db,
которое и есть адрес
сервера в сети:
docker compose exec client mysql -h db -uroot -pdemo -e "SELECT 1"
Если сервер ещё стартует,
запрос повторяют через
несколько секунд.
Имя сервиса db
заменяет числовой адрес
внутри проекта.
Опишите внутреннюю сеть back, сервис db без порта и соседа probe на mysql:9.7 с ожиданием в фоне.
Выполните короткий запрос к db из probe по имени сервиса.