1

我有简单的 docker-compose aka:

version: '3'
services:
  app:
    container_name: app
    ports:
      - 8081:8081
  db:
    container_name: db
    ports:
      - 5432:5432

默认情况下,这个容器是在默认(brige)网络中创建的。该应用程序具有 db 连接属性:jdbc:postgresql:// db /some_db,并且一切正常。但有时我希望应用程序连接到其他数据库,该数据库在我的主机上运行,​​而不是在 docker 容器中。

主要问题是我无法更改连接属性。而且,理想情况下,我不想每次切换数据库主机时都运行带有一些附加选项的新容器(但重启是可以的)

因此我的问题是:实现这一目标的最佳方法是什么?是否可以为容器主机解析设置额外的路由?例如,如果 db 容器不可访问,则路由到主机。

4

1 回答 1

0

您可以从您的主机访问主机服务。
请参阅“如何从 docker 容器访问主机端口”:

ip addr show docker0 
docker.for.mac.localhost # docker 17.06+ June 2017

如果 db 容器不可访问,则路由到主机。

这是协调者的工作。
例如,使用kubernetes,您可以关联一个外部负载均衡器,可以对其进行调整以将流量重定向到您的 pod,除非它不可访问。

于 2017-10-12T20:42:37.210 回答