Как заставить Django внутри сети docker compose распознавать имя службы postgres при использовании PyCharm?

Я возился с моим Dockerfile и Docker Compose, пытаясь заставить PyCharm запустить и отладить мое приложение django. Я определил, что мне нужно, чтобы все службы находились в одной сети, и разместил их в одной сети, но когда я выполняю команду runserver в конфигурации PyCharm, я получаю ошибку, что django.db.utils.OperationalError: could not translate host name "postgres" to address: Name or service not known

Я пробовал настроить Dockerfile, чтобы переменные окружения выставлялись внутри него, а не в файле compose. А также сгруппировать все службы в одну сеть. Я в растерянности, куда двигаться дальше, поскольку большинство других вопросов на StackOverflow, связанных с этим, советуют мне делать то, что я уже пробовал

docker-compose.yml

version: "2"
services:
    redis:
        image: redis:latest # redis
        restart: always
        logging:
            driver: "none"
        networks:
            - integration

    postgres:
        image: postgres:latest
        restart: always
        ports:
            - "5400:5399"
        volumes:
            - /usr/lib/postgresql
            - ./tmp:/dmp:ro
            - ./load.sh:/usr/app/load.sh
        environment:
            POSTGRES_USER: vagrant
            POSTGRES_PASSWORD: vagrant
            POSTGRES_HOST_AUTH_METHOD: trust
        logging:
            driver: none
        networks:
            - integration

    django:
        build: .
        command: "/bin/bash"
        working_dir: /usr/app/
        stdin_open: true
        tty: true
        volumes:
            - ./tmp:/tmp
            - ./:/usr/app
            - ~/.ssh:/root/.ssh:ro
        links:
            - redis:redis
            - postgres:postgres
        depends_on:
            - postgres
        environment:
            DJANGO_SETTINGS_MODULE: project.settings.docker_local
            DJANGO_DEBUG: "true"
            SSH_AUTH_SOCK: /tmp/authsock
        logging:
            driver: none
        networks:
            - integration

networks:
    integration:
        driver: bridge

Dockerfile

FROM python:latest
RUN echo "installing requirements"
COPY requirements/ /usr/app/reqs/
RUN pip install -r /usr/app/reqs/base.txt
RUN pip install -r /usr/app/reqs/local.txt
ENV DJANGO_SETTINGS_MODULE=project.settings.docker_local
COPY . /usr/app/
RUN echo "done"

Я подключил PyCharm к удаленному интерпретатору, живущему внутри службы django, и он смог распознать все установленные пакеты.

У меня есть конфигурация docker-compose для создания контейнеров в PyCharm, и конфигурация Django Server для запуска команды runserver на службе Django.

Docker-Compose Config:

Docker-Compose Config

Django-Server Config:

Django-Server Config

Наконец, вот соответствующая часть моего файла настроек, docker_local.py

DATABASES = {
    'default': dj_database_url.config(
        default='postgres://vagrant:vagrant@postgres/vagrant'),
}
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'

Любая помощь или совет будут высоко оценены.

Вернуться на верх