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

无法将Spring-Boot2服务连接到其他容器中的mysql

斜浩穰
2023-03-14
 2019-06-28 12:23:48 ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
 com.mysql.jdbc.exceptions.jdbc4.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 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at  sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:988)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
....
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
... 66 common frames omitted
version: "2"
services:
  rdf-data:
    container_name: rdf-data
    image: mysql:latest
    environment:
      MYSQL_DATABASE: test
      MYSQL_USER: nicolas
      MYSQL_PASSWORD: mysql
      MYSQL_ROOT_PASSWORD: mysql
    ports:
      - 3306:3306
      - 33060:33060
    hostname: rdf-data
    networks:
      net1:
        ipv4_address: 192.19.0.4
  rdf-core:
    image: openjdk:8-jdk-alpine
    depends_on:
      - rdf-data
    container_name: rdf-core
    links:
      - rdf-data:rdf-data
    volumes:
      - ../docker:/usr/local/share/rdf
    ports:
      - "8080:8080"
    entrypoint: /usr/local/share/rdf/run.sh
    hostname: rdf-core
    environment:
      PROFILE: "default"
      SERVER_PORT: "8080"
  networks:
    net1:
      ipv4_address: 192.19.0.8
networks:
  net1:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
  ipam:
    driver: default
    config:
      - subnet: 192.19.0.0/24
        gateway: 192.19.0.1
database=mysql
spring.datasource.url=jdbc:mysql://192.19.0.4/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=mysql
spring.datasource.driver-class=com.mysql.cj.jdbc.MysqlXADataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=1800000
...

共有1个答案

盖锐进
2023-03-14

尝试在docker-compose文件的环境部分指定spring boot应用程序的参数:

 rdf-core:
    image: openjdk:8-jdk-alpine
    depends_on:
      - rdf-data
    container_name: rdf-core
        links:
          - rdf-data:rdf-data
        volumes:
          - ../docker:/usr/local/share/rdf
        ports:
          - "8080:8080"
        entrypoint: /usr/local/share/rdf/run.sh
        hostname: rdf-core
        environment:
          PROFILE: "default"
          SERVER_PORT: "8080"
          spring.datasource.url=jdbc:mysql://ipaddress/test?useSSL=false
          spring.datasource.username=root
          spring.datasource.password=mysql
          spring.datasource.driver-class=com.mysql.cj.jdbc.MysqlXADataSource
          spring.datasource.driver-class-name=com.mysql.jdbc.Driver
          spring.datasource.hikari.connectionTimeout=30000
          spring.datasource.hikari.idleTimeout=600000
          spring.datasource.hikari.maxLifetime=1800000

问题的另一个可能原因:depends_on不能保证依赖关系容器完全运行。因此,如果MySQL容器比Spring Boot容器需要更多的时间才能完全启动,那么连接就会失败。

看看这个:

 类似资料:
  • 和DocerFile 很好笑因为...首先,我想把容器的名称“localhost”更改为另一个。但当我改变的时候,我不能运行Spring Bot应用程序,即使从IntelliJ。我在docker中创建了MySql的映像,并尝试在IntelliJ中进行连接。这是warking但当我想使用SpringBoot应用程序在caontainer然后是问题。我还没找到解决办法。我会非常感谢每一个帮助。 我在这

  • 错误:Redis连接到Redis:6379失败-连接econnrejected 172.20.0.2:6379 码头集装箱 Redis工作: docker-compose.yml

  • 问题内容: 我有一个kubernetes单节点设置(请参阅https://coreos.com/kubernetes/docs/latest/kubernetes- on-vagrant-single.html ) 我有一个服务和一个创建吊舱的复制控制器。这些Pod需要连接到同一服务中的其他Pod(注意:这最终是使我可以使mongo运行带有副本集(非localhost),但是此简单示例演示了mon

  • 我尝试使用Stomp(而不是SockJs)实现普通的网页口袋,其中包含Spring服务器和Angular客户端。 下面是我在Spring中启用websocket的代码: 但是我无法连接到它,当我尝试使用Stumpjs进行角度连接时,连接永远不会完成。当我使用wscat(顺便说一句, /api/很好)进行测试时,没有任何响应,它总是尝试连接但没有成功。 这里怎么了? 编辑:这是我使用的两个依赖项 编

  • 我正在尝试连接到我的电子邮件服务器使用我的spring boot应用程序。当我从命令提示符telnet localhost25时,我看到下面的- 220 Microsoft ESMTP邮件服务准备就绪2016年5月18日星期三11:09:30-0400 但是,当我尝试从我的程序连接时,我看到下面的错误 原因:org.springframework.Mail.mailsendexception:邮件

  • 我的docker版本是1.13.1。我正试图从我的docker容器连接到redis-server,但我遇到了拒绝连接的错误。详细的日志如下: 原因:redis.clients.jedis.exceptions.jedisconnectionException:java.net.Connection:redis.clients.jedis.Connection(Connection.java:207