【发布时间】:2016-12-30 06:45:44
【问题描述】:
我们有一个远程 postgres 数据库(一个亚马逊 rds 数据库),我们需要从 docker django 应用程序访问它,我们如何链接它?
在这种情况下我的 django-compose.yml 应该是什么样子?
【问题讨论】:
标签: django postgresql docker
我们有一个远程 postgres 数据库(一个亚马逊 rds 数据库),我们需要从 docker django 应用程序访问它,我们如何链接它?
在这种情况下我的 django-compose.yml 应该是什么样子?
【问题讨论】:
标签: django postgresql docker
如果没有像 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。
【讨论】:
我不熟悉 Amazon RDS 数据库,但我猜您有一个 IP 地址和一些凭据来访问数据库。
在这种情况下,您希望将 IP 地址作为 extra host 添加到您的 Docker 容器中:
django_app:
image: your_image
extra_hosts:
- "database:123.456.78.90"
现在您的 django-app 可以使用主机名 database 访问数据库。
【讨论】:
ports 部分仅指定哪些端口暴露在 docker-world 之外(例如映射到您的外部 IP 地址)。在你的情况下,它可能只是端口80