не получается подключить docker контейнер к сушествующей базе
всем привет ! нужна помощь в понимании докера
version: '3.8'
services:
db:
image: postgres
container_name: p4
ports:
- "5436:5432"
restart: always
environment:
POSTGRES_USER: dmitry
POSTGRES_PASSWORD: 123
POSTGRES_DB: testbase1
# PGDATA:
volumes:
- postgres-data:/var/lib/postgresql/data
web:
image: dmitry123123/web4
container_name: web4
restart: always
ports:
- "5006:5000"
environment:
POSTGRES_HOST: db
links:
- db
volumes:
postgres-data:
если я запускаю его с помощью docker compose up то все в порядке и запускается два контейнера postgres и web4 но что если я хочу запустить еще один web4 разумеется на другом порту и подключить к существующему контейнеру на порту 5436 , как мне это сделать я получаю ошибку
could not connect to server: Cannot assign requested address Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5436?
или к еще одному запущенному экземпляру postgres на порту 5435
а еще как мне подключить web4 к существующей локальной базе postgres на порту 5432 если это возможно то хотелось бы увидеть строчку запуска, а то у меня какое-то недопонимание
Ответы (1 шт):
Для осуществления ваших мечт надо чтобы ваши приложения работали в одной подсети и видели друг друга по alias.
Есть сложный путь - после запуска использовать docker network ls, пытаться найти созданную подсеть по имени, ну и новому контейнеру указать ее при запуске.
Либо, решаем это на уровне docker-compose.
- Добавляем в ваш файл секцию
network
networks:
app_network:
# Общая сеть для приложений
name: 'app_network'
- Прописываем ее в сервис
db
db:
...
networks:
app_network:
aliases:
- db.local
Теперь, если для запуска второго контейнера создать свой compose
и прописать ему аналогично сеть app_network, то база будет доступна по алиасу db.local