我有简单的docker-compose aka:

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

默认情况下,此容器是在默认(浅色)网络中创建的。
该应用程序具有数据库连接属性:jdbc:postgresql:// db / some_db,everythig可以完美运行。但是我不时希望应用程序连接到其他在我的主机机器上运行的数据库,而不是在Docker容器中运行。

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

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

最佳答案

您可以从主机访问主机服务。
参见“How to access host port from docker container”:

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



对于协调员而言,这是一项工作。
例如,使用kubernetes,您可以将external load balencer关联起来,可以对其进行调整以将流量重定向到您的Pod,除非无法访问它。

关于docker - 路由到主机而不是特定的容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46718254/

10-16 21:45