Я пытаюсь понять, как я получаю доступ к контейнерам между собой через их имя контейнера. В частности, при использовании контейнера pgadmin и подключении к контейнеру postgresql через dns.
В docker-compose V3 я не могу связать их, и networks:
, кажется, также недоступен.
Основная причина, по которой это необходимо, заключается в том, что когда контейнеры раскручиваются, у них нет статического IP-адреса, поэтому в pgadmin я не могу каждый раз подключаться к базе данных postgresql, используя один и тот же IP-адрес, поэтому будет работать имя DNS лучше (т.е. имя контейнера).
Можем ли мы сделать это с помощью docker-compose или хотя бы установить статический IP-адрес для конкретного контейнера?
Я попытался создать пользовательскую сеть:
networks:
backed:
, а затем использовать его в сервисе:
app:
networks:
- backend
Это приводит к ошибке docker-compose, касающейся недопустимого параметра «сети» в приложении.
докер-compose.yml
version: "0.1"
services:
devapi:
container_name: devapi
restart: always
build: .
ports:
- "3000:3000"
api-postgres-pgadmin:
container_name: api-postgres-pgadmin
image: dpage/pgadmin4:latest
ports:
- "5050:80"
environment:
- PGADMIN_DEFAULT_EMAIL=stuff@stuff.com
- PGADMIN_DEFAULT_PASSWORD=12345
api-postgres:
container_name: api-postgres
image: postgres:10
volumes:
- ./data:/data/db
ports:
- "15432:5432"
environment:
- POSTGRES_PASSWORD=12345