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

无法使用Docker compose将SpringBoot连接到MySql

叶景龙
2023-03-14

我创建了一个docker compose文件,将MySql连接到SpringBoot应用程序。但我得到了这个错误:

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) ~[na:1.8.0_242]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_242]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_242]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_242]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:342) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2221) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2016) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.46.jar!/:5.1.46]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_242]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_242]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_242]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_242]
FROM openjdk:8
EXPOSE 8083
ADD target/ProjectCrud.jar ProjectCrud.jar
ENTRYPOINT ["java", "-jar", "ProjectCrud.jar"]
version: '3'
    services:
    docker-mysql:
        restart: always
        container_name: docker-mysql
        image: mysql
        environment:
            MYSQL_DATABASE: pfa
            MYSQL_ROOT_PASSWORD: aze123qsd
            MYSQL_USER: root
            MYSQL_ROOT_HOST: '%'
        volumes:
            - ./sql:/docker-entrypoint-initdb.d
        networks:
            - spring-db

        ports:
            - "3306:3306"
        healthcheck:
            test: "/usr/bin/mysql --user=root --password=root--execute \"SHOW DATABASES;\""
        interval: 2s
        timeout: 20s
        retries: 10


    sign-up-app:
        build: ./
        expose:
            - "10222"
        ports:
            - 10222:10222
        environment:
            WAIT_HOSTS: mysql:3306
        depends_on:
            - docker-mysql
        networks:
            - spring-db
  networks:
      spring-db:
spring.datasource.username=root
spring.datasource.password=aze123qsd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://docker-mysql:3306/pfa? 
useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
server.port=8089

我尝试在本地机器中使用docker默认ip运行Spring Boot应用程序,同时在这个docker-compose.yml文件中只运行MySql容器,结果运行得非常好。但当我尝试docker编写文件时。我知道这个错误。

共有1个答案

靳睿
2023-03-14

试试这个

Docker-compose.yml

version: '3'
    services:
      docker-mysql:
          restart: always
          container_name: docker-mysql
          image: mysql
          environment:
              MYSQL_DATABASE: pfa
              MYSQL_ROOT_PASSWORD: aze123qsd
              MYSQL_USER: root
              MYSQL_ROOT_HOST: '%'
          volumes:
              - ./sql:/docker-entrypoint-initdb.d
          networks:
              - spring-db
          ports:
              - "3306:3306"
          healthcheck:
              test: "/usr/bin/mysql --user=root --password=root--execute \"SHOW DATABASES;\""
              interval: 2s
              timeout: 20s
              retries: 10

      sign-up-app:
          build: ./
          expose:
              - 10222
          ports:
              - "10222:10222"
              - "8089:8089"   ## <-- Add this
          environment:
              WAIT_HOSTS: docker-mysql:3306   ## <-- change this
          depends_on:
              - docker-mysql
          networks:
              - spring-db

networks:
    spring-db:
 类似资料:
  • 我设法将我的应用程序与HSQLDB连接起来,并使其运行良好。然而,我在将它连接到MySQL时遇到了一些麻烦。 下面是我的堆栈跟踪: 应用程序运行失败 null 我的pom.xml文件: null 这里是我的application.properties文件: 如果我没有错的话,我将MySQL用户配置为与我在ubuntu中的系统用户相同,这样我就可以用“mysql-u thalysmg”启动MySQL

  • 我正在尝试从Spring Boot应用程序连接到mySQL数据库。然而,当我试图运行它时,它显示出错误。 我如何解决这个问题? 错误 从我的文件中添加代码片段 pom。xml 应用属性 堆栈跟踪 我还没有在sql中手动创建表,因为我认为spring.jpa.hibernate.ddl-Auto=date应该这样做

  • 我在伪分布式设置中使用Hbase 1.2.6、Phoenix-4.13.1-Hbase 1.2、hadoop 2.9.0。我可以在hbase shell中创建表,我想使用phoenix来读取那些表。运行'sqlline.py localhost:2181:/hbase-unsecure'时出现以下错误: hbase-site.xml文件:

  • 我正在尝试将MySQL数据库连接到XAMPP。每当我尝试在XAMPP上按start MySQL时,它都不会运行,我会得到一个错误: 这是因为我的病毒防护软件或VPN吗?我将如何更改MySQL和控制面板中的端口?如果有人能给我一些建议或指导我回答与此类似的已回答问题,将不胜感激。谢谢你。

  • 提前感谢所有的帮助。我无法使用OCI8将我的PHP连接到ORACLE。我用的软件规格是 Windows 10版本:主64位 我使用NAVICAT作为我的mysql客户端,并且能够使用它连接到数据库。像instant client path和sqlplus这样的设置必须在这一点上进行设置,并且所有设置都可以正常工作。 现在真正的问题是使用OCI8将PHP连接到ORACLE。我已经使用这个链接下载了正

  • 使用SSL连接到Postgres时引发异常。 原因:javax.net.ssl.SSLException:收到致命警报:在sun . security . SSL . alerts . getsslexception(alerts . Java:208)在sun . security . SSL . alerts . getsslexception(alerts . Java:154)在sun .