gpt4 book ai didi

java - 无法从 docker 容器连接到 mysql 主机

转载 作者:行者123 更新时间:2023-11-29 17:57:14 29 4
gpt4 key购买 nike

我正在从 docker 容器运行应用程序,该应用程序尝试连接 mysql 主机

mysql主机是localhost我的 docker 容器在 localhost:8080 上运行

这是我的 config.yml 文件

database:
driverClass: com.mysql.cj.jdbc.Driver
# TODO: if running locally without k8s, change the service url to your localhost
url: jdbc:mysql://localhost:3306/locations?useSSL=false
user: root
password: root
maxWaitForConnection: 1s
validationQuery: "SELECT now()"
validationQueryTimeout: 3s
minSize: 8
maxSize: 32
checkConnectionWhileIdle: false
evictionInterval: 10s
minIdleTime: 1 minute
checkConnectionOnBorrow: true

当我尝试访问我的应用程序时,它总是给我异常(exception)

ERROR [2018-02-08 18:16:56,508] org.apache.tomcat.jdbc.pool.ConnectionPool: Unable to create initial connections of pool.
! java.net.ConnectException: Connection refused (Connection refused)

我通过谷歌尝试了很多解决方案:D,但没有任何对我有用!

我的java连接器版本:

编译组:'mysql',名称:'mysql-connector-java',版本:'8.0.9-rc'

谁能帮忙啊!我也在 ubuntu 上运行,

当我尝试从 IDE 运行我的应用程序时,它运行良好,但从 docker 容器运行时出现异常!

最佳答案

如果您的 mysql 作为 docker 容器运行,那么您可能需要将 docker 容器与 mysql 容器链接:

docker run --link mysql_container_name:db your_application

然后,您可以将 jdbc URL 修改为 jdbc:mysql://db:3306/locations?useSSL=false。这是因为您已将两个 docker 容器链接在一起,并将 db 建立为 docker 内指向您的 mysql 容器的主机名。

如果您的 mysql 数据库不是在 docker 容器中运行,而是在本地计算机上运行,​​那么情况会变得更加复杂。如果您不在 Linux 计算机上,那么您的 Docker 容器从技术上讲是在 Docker 虚拟机中运行的。因此,从容器的角度来看,localhost 是 docker 虚拟机,而不是运行 MySQL 的物理机。

如果是这种情况,一个简单的解决方法是在 jdbc URL 中使用计算机的网络 IP 地址而不是 localhost。假设您机器的 IP 地址是 192.168.0.10:

jdbc:mysql://192.168.0.10:3306/locations?useSSL=false

关于java - 无法从 docker 容器连接到 mysql 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48692293/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com