在使用 PyCharm 时,如何让 Django 进入 docker compose 网络以识别 postgres 服务名称?

Joe*_*ard 5 django postgresql pycharm docker docker-compose

我一直在摆弄我的 Dockerfile 和 Docker Compose,试图让 PyC​​harm 能够运行和调试我的 django 应用程序。我已经确定我需要所有服务都位于同一网络上,并将它们放在同一网络上,但是当我通过 PyCharm 配置执行 runserver 命令时,出现错误: django.db.utils.OperationalError: could not translate host name "postgres" to address: Name or service not known

我尝试调整 Dockerfile 以公开其中的环境变量,而不是在撰写文件中。以及将所有服务分组到同一网络中。我有点不知道从这里该去哪里,因为与此相关的大多数其他 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
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

我已将 PyCharm 与服务内的远程解释器连接起来django,它能够识别所有已安装的软件包。

我有一个用于在 PyCharm 中构建容器的 docker-compose 配置,以及一个用于在 Django 服务上运行 runserver 命令的 Django 服务器配置。

Docker-Compose 配置:

Docker-Compose 配置

Django 服务器配置:

Django 服务器配置

最后,这是我的设置文件的相关部分,docker_local.py

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"
Run Code Online (Sandbox Code Playgroud)

非常感谢任何和所有的帮助或建议。