Как подключиться к контейнеру базы данных postgresql из другого контейнера?
Похоже, я не могу получить доступ к 127.0.0.1:5555 из моего company_tasks контейнера:
version: "3.9"
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
restart: always
ports:
- "5555:5432"
environment:
- POSTGRES_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
rabbit:
image: rabbitmq
ports:
- "5673:5672"
depends_on:
- db
company_tasks:
build: .
command: >
bash -c "pip install psycopg2-binary &&
pip install -r pip_requirements.txt &&
python manage.py migrate &&
python manage.py runserver &&
celery -A company_tasks worker -l info -B"
volumes:
- .:/code
ports:
- "8000:8000"
environment:
- POSTGRES_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
depends_on:
- db
Хотя я могу получить доступ к нему из хост-системы с помощью:
psql -h 127.0.0.1 -p 5555 -U postgres
Company_tasks - это приложение django, и оно жалуется:
company_tasks_1 | django.db.utils.OperationalError: connection to server at "127.0.0.1", port 5555 failed: Connection refused
company_tasks_1 | Is the server running on that host and accepting TCP/IP connections?
мой django settings.py:
DATABASES = {
'default': {
'ENGINE': "django.db.backends.postgresql",
'NAME': 'company_tasks',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': '127.0.0.1',
'PORT': '5555',
}
}
Как сделать контейнер базы данных видимым для контейнера company_tasks?
Я пробовал настраивать мостовые сети, но это не сработало. Я не могу использовать порт 5432 на хосте, потому что его занимает другой экземпляр postgres.