【问题标题】:How to make loacalhost django interact with posgtres worked in docker container?如何使 localhost django 与在 docker 容器中工作的 postgres 交互?
【发布时间】:2021-01-13 07:52:53
【问题描述】:

我正在通过 docker 运行我的项目。它包含一些 django 的应用程序(后端)、vue.js(前端)、celery、redis 和 postgres。所有服务都按预期工作,但现在我需要编辑我的项目源代码。 为此,我想停止负责后端和前端的容器并在 localhost 上运行它们。其他服务,如 redis、postgress 等,我留在容器中工作。我怎样才能更好地做到这一点?

我在做: 停止提到的容器, 离开在容器中工作其他服务, 给了python manage.py runserver。

但现在我得到了这个错误。:

psycopg2.OperationalError: could not connect to server: Connection refused
                Is the server running on host "127.0.0.1" and accepting
                TCP/IP connections on port 5432?

我猜我的项目无法访问 postgres db 工作容器。为什么会这样? 我在终端说服我的数据库在 5432 端口的 docker 容器中运行。

【问题讨论】:

  • 127.0.0.1 是您的本地主机 IP,但 docker 设计使用单独的网络。你应该运行docker inspect <postgres_container_id> | grep "IPAddress"来获取docker分配的地址。
  • 当您启动数据库容器时,您是否有docker run -p ????:5432 或 Compose ports: [????:5432] 设置?连接到127.0.0.1(Docker Toolbox 上除外)和该端口号。
  • @DavidMaze 是的,您认为方向正确。解决方案是在我的文件中指定外部端口。谢谢。

标签: django postgresql docker


【解决方案1】:

在我的 docker compose 文件中,我将指令“expose - 5432”更改为“ports - 5432:5432”。 在这个项目按预期在本地主机上运行之后。

【讨论】:

    猜你喜欢
    • 2019-06-06
    • 2022-12-02
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多