当前位置: 首页 > 知识库问答 >
问题:

Docker容器上的通信链接失败:Spring boot,MySQL[重复]

高锦
2023-03-14

在stackoverflow上搜索后,感觉这是一个常见的问题,但我没有找到决定。

没有docker,程序可以在本地主机上运行。docker文件:

FROM openjdk:8
ADD target/DockerMyBlog.jar DockerMyBlog.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "DockerMyBlog.jar"]

应用程序。属性(确实尝试将此处的“localhost”替换为“dockermyblog”):

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/javastudy
jdbc.username=hey
jdbc.password=hey

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

docker build -t dockermyblog .

尝试通过以下方式启动它:

docker run -p 8080:8080 dockermyblog

接收错误:

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)
......................

试图设置(不明白那是什么):

jdbc:mysql://localhost:3306/javastudy?enabledTLSProtocols=TLSv1.2

jdbc.url=jdbc:mysql://dockermyblog:3306/javastudy?autoReconnect=true&useSSL=false

试图放入终端:

docker inspect dockermyblog | grep IPAddress

终端不知道“grep”

我应该如何在本地启动它

共有1个答案

祁俊拔
2023-03-14

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

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

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

 类似资料:
  • 当我的java spring应用程序尝试连接到数据库时,我会得到以下信息: spring应用程序中的连接url如下所示: 最后,docker图像-A: 你知道问题是什么吗?谢谢你!

  • Dockerfile文件: docker编写。yml公司 而不是“build:.”尝试了“image: dockermyblog:最新”。没有结果。 application.properties my\u db正在工作。在“exec”之后,我可以在其中创建所需的表。但由于“通信链路故障”,无法启动my\u应用程序。 我的yml怎么了??

  • 我是码头工人的新手。我用的是Spring boot微服务。它在我的本地机器上运行良好。现在,我需要为我的应用程序创建一个docker图像。它依赖于Mysql服务器。我使用docker-compose来创建我的容器。在运行我的自定义映像(spring boot应用程序)时,我收到一个通信链接失败错误。Mysql镜像独立运行良好。 我的 yml 文件 : 应用程序属性文件 : 完整的错误消息: spr

  • 问题内容: 我使用Java从Mysql查询一些记录。但是在某些持续时间的查询中,我遇到了使查询失败的问题,而在其他查询中,它查询成功了。错误消息是下一个: 我尝试了一些方法,例如: 设置 在 添加 到我的连接网址 但什么也没发生。 我的环境是: Mysql:5.5.3-m3-log源代码分发 的Java:1.6.0_16 JDK:HotSpot(TM)64位服务器VM(内部版本14.2-b01,混

  • 我正在使用JAVA JDBC驱动程序从MySQL获取数据。 异常...

  • 我拉出了mysql docker映像,并用命令运行容器: 此时,springBoot在本地工作。它与MySQL连接: 现在,我希望springBoot应用程序也在单独的docker容器上,在同一服务器上。为此,我使用了DockerFile: 同样,它无法连接到数据库: