В одной пользовательской сети Docker встроенный DNS разрешает имя контейнера (или имя сервиса в Compose) в IP этого контейнера. Обращаться по hostname удобнее, чем по IP.
# docker run с именами
docker network create mynet
docker run -d --name db --network mynet postgres
docker run -d --name app --network mynet -e DB_HOST=db myapp
# В приложении (Go):
connStr := "host=db user=postgres ..." // "db" - hostname
Имя сервиса в docker-compose.yml становится hostname. Сервис postgres доступен по имени postgres с любого другого сервиса в той же сети.
services:
app:
environment:
- DB_HOST=postgres
postgres:
image: postgres:16