Joe*_*ard 5 django postgresql pycharm docker docker-compose
我一直在摆弄我的 Dockerfile 和 Docker Compose,试图让 PyCharm 能够运行和调试我的 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 配置:
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)
非常感谢任何和所有的帮助或建议。