Можно ли два инстанса сервиса повесить на 1 порт/2 адреса в docker compose?
Есть желание из докеркомпоза создать конструкцию, где два одинаковых сервиса (для примера - postgres) с различными задачами будут доступны каждый на своём ip-адресе, но при этом у обоих будет открыт один порт. Конфигурация с разными портами - работает, есть ли возможность сделать, чтобы каждый сервис слушал свой порт 5432?
services:
postgres-1:
container_name: "postgres-1"
image: "postgres:16.4"
environment:
POSTGRES_PASSWORD: "postgres"
restart: "always"
volumes:
- "./db1:/var/lib/postgresql/data"
networks:
custom_network:
ipv4_address: 172.28.1.2
ports:
- "5432:5432"
postgres-2:
container_name: "postgres-2"
image: "postgres:17beta3"
environment:
POSTGRES_PASSWORD: "postgres"
restart: "always"
volumes:
- "./db2:/var/lib/postgresql/data"
networks:
custom_network:
ipv4_address: 172.28.1.3
ports:
- "5433:5432"
networks:
custom_network:
driver: bridge
enable_ipv6: false
ipam:
driver: default
config:
- subnet: 172.28.1.0/24```
Ответы (1 шт):
Автор решения: Rabban Keyak
→ Ссылка
Укажите у одного:
ports:
- "127.0.0.1:5432:5432"
а у другого:
ports:
- "127.0.0.2:5432:5432"
Или же обращайтесь по адресам внутренней сети - 172.28.1.2:5432
и 172.28.1.3:5432
.