【问题标题】:How to connect my Docker application to a remote database?如何将我的 Docker 应用程序连接到远程数据库?
【发布时间】:2021-04-23 17:32:25
【问题描述】:


我有 2 个 Spring Boot 应用程序在 docker 中运行。
这两个应用程序都连接到在另一台机器上运行的 Postgres 数据库。
在将应用程序放入容器之前,我曾经从 localhost 创建一个 ssh 隧道,以连接另一台包含运行此命令的数据库的机器:

> ssh -vnN *user*@*host* -p *port* -L 5433:user-host.local:5432

这样,我可以在我的 application.properties 文件中设置 localhost:5433 来连接远程数据库,该数据库在端口 5432 中运行。
这是来自 SpringBoot 应用程序的 application.properties 文件:

>spring.datasource.url = jdbc:postgresql://localhost:5433/*database*...\
>spring.datasource.username = *user*\
>spring.datasource.password = *password*

但是现在,在容器中运行同一个应用程序,我知道 localhost 指的是容器 ip。而且我无法连接到远程数据库。
我不知道如何使用 SSH 隧道访问同一个远程数据库。

我该怎么做?

【问题讨论】:

    标签: java spring database spring-boot docker


    【解决方案1】:

    问题解决了!
    对于遇到同样问题的其他人来说:

    在我的应用程序的 aplication.properties 文件中,我需要将 spring.datasource.url 更改为指向主机的 ip

    新的application.properties

    spring.datasource.url = jdbc:postgresql://host_ip_here:5433/database...
    spring.datasource.username = 用户
    spring.datasource.password = 密码

    然后,在主机中我可以执行 ssh 命令链接到远程数据库,但是现在,在映射端口之前添加主机的 ip。
    通过这种方式,我告诉 docker 访问端口 5433 中的主机 IP 的每个请求都将转发到端口 5432 中的数据库机器主机(默认 postgres 端口)

    ssh -vnN 用户@主机 -p 端口 -L host_ip_here :5433:user-host.local:5432

    我知道这个问题还有其他解决方案,所以如果你有更好的解决方案,请在这里发短信!

    【讨论】:

      猜你喜欢
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2013-05-18
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多