路由到主机而不是特定的容器

我有简单的docker – 撰写又名:

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

默认情况下,这个容器是在默认(brige)networking中创build的。 该应用程序具有数据库连接属性:jdbc:postgresql:// db / some_db,everythig完美工作。 但时不时我想要应用程序连接到其他数据库,这是运行在我的主机 ,而不是在docker的容器。

主要的问题是我不能改变我的连接属性。 而且,理想情况下,我不想运行新的容器,每次我想要切换数据库主机(但重新启动是可以的)

因此我的问题是:达到这个目标的最好方法是什么? 是否有可能为容器主机parsing设置额外的路线? 对于exapmle,如果db容器不可达,则路由到主机。

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

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

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

这是一个pipe弦乐队的工作。
例如,使用kubernetes ,您可以关联一个外部负载balencer ,可以将其调整为将stream量redirect到您的pod,除非无法访问。