首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器上的通信链路故障: Spring,MySQL

问Docker容器上的通信链路故障: Spring,MySQL
EN

Stack Overflow用户
提问于 2022-05-18 08:15:03
回答 1查看 627关注 0票数 0

搜索堆栈溢出后,感觉这是一个常见的问题,但我没有找到决定。

在没有docker的情况下,程序在本地主机上工作。码头文件:

代码语言:javascript
复制
FROM openjdk:8
ADD target/DockerMyBlog.jar DockerMyBlog.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "DockerMyBlog.jar"]

application.properties (确实试图在这里替换“dockermyblog”的"localhost“):

代码语言:javascript
复制
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/javastudy
jdbc.username=hey
jdbc.password=hey

在终端中通过命令创建容器:

代码语言:javascript
复制
docker build -t dockermyblog .

试图通过以下方式启动:

代码语言:javascript
复制
docker run -p 8080:8080 dockermyblog

接收错误:

代码语言:javascript
复制
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:829)
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:449)
......................

​

试图设置(不了解这是什么):

代码语言:javascript
复制
jdbc:mysql://localhost:3306/javastudy?enabledTLSProtocols=TLSv1.2

或

代码语言:javascript
复制
jdbc.url=jdbc:mysql://dockermyblog:3306/javastudy?autoReconnect=true&useSSL=false

试图安装终端:

代码语言:javascript
复制
docker inspect dockermyblog | grep IPAddress

终端不知道"grep“

我该怎么做才能在本地启动?

EN

回答 1

Stack Overflow用户

发布于 2022-05-18 09:11:17

在这样的Java应用程序中使用localhost时,它解析为容器上的地址,主机上没有地址(所以是您的计算机)。因为在同一个容器中没有运行MySQL服务器,所以它将失败。

如果将url更改为jdbc.url=jdbc:mysql://host.docker.internal:3306/javastudy,则容器MySQL应用程序可以访问在主机上运行的MySQL。有关详细解释,请参阅this帖子。

但是,为了使它在本地运行,所以在Intellij和容器中,您可以使用不同的spring启动配置文件。假设application-local.proeprties只包含jdbc.url=jdbc:mysql://localhost:3306/javastudy,如果您使用该配置文件,它将覆盖url

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72285476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档