【问题标题】:How to use/link remote postgres db with django docker implementation如何使用/链接远程 postgres db 与 django docker 实现
【发布时间】:2016-12-30 06:45:44
【问题描述】:

我们有一个远程 postgres 数据库(一个亚马逊 rds 数据库),我们需要从 docker django 应用程序访问它,我们如何链接它?

在这种情况下我的 django-compose.yml 应该是什么样子?

【问题讨论】:

    标签: django postgresql docker


    【解决方案1】:

    如果没有像 Rancher 或 docker 网络中的 IPSEC 和其他工具那样的更多努力,您无法链接这些容器 - 而且通常不需要。这意味着您将路由/加入不同 docker 主机的 2 个 docker-networks,这实际上是一个巨大的话题。这背后的一般理论是https://docs.docker.com/engine/userguide/networking/,我想如果你想要这个,试试看,然后回来问更具体的问题。

    低级概念只是按原样使用外部连接,因为您的 docker 容器可以毫无问题地访问外部世界。

    您的 AWS 实例肯定会有一个外部可解析的名称,例如 youdb.aws.domain.com,而 postgres 服务器运行在 9000 上

    因此,您只需使用 postgresql 连接到 youdb.aws.domain.com:9000

    【讨论】:

      【解决方案2】:

      我不熟悉 Amazon RDS 数据库,但我猜您有一个 IP 地址和一些凭据来访问数据库。

      在这种情况下,您希望将 IP 地址作为 extra host 添加到您的 Docker 容器中:

      django_app:
        image: your_image
        extra_hosts:
          - "database:123.456.78.90"
      

      现在您的 django-app 可以使用主机名 database 访问数据库。

      【讨论】:

      • 这基本上正是我在 mysq 问题中所指的内容,实际上只有在您没有外部 DNS 解析器时才需要 - 仍然需要外部连接,它没有什么“链接”之类的
      • 我们还需要提及端口(在端口部分)?
      • ports 部分仅指定哪些端口暴露在 docker-world 之外(例如映射到您的外部 IP 地址)。在你的情况下,它可能只是端口80
      • @Neo 简单的答案是始终使用标准的 postgres 端口并做出这样的假设。如果你需要一个不同的端口,你应该通过传递给容器的环境变量来指定它。
      猜你喜欢
      • 1970-01-01
      • 2022-06-17
      • 2017-08-06
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      相关资源
      最近更新 更多