Java 无法从spring boot docker容器连接mysql docker容器

Java 无法从spring boot docker容器连接mysql docker容器,java,mysql,spring-boot,Java,Mysql,Spring Boot,我得到以下错误 2020-12-26 23:17:30.499信息1---[main]org.hibernate.dialogue.dialogue:hh000400:使用方言:org.hibernate.dialogue.mysql57dialogue licensingservice_1|休眠:如果存在许可证,则删除表 licensingservice|u 1 | 2020-12-26 23:17:31.006信息1---[main]com.zaxxer.hikari.HikariDataS

我得到以下错误

2020-12-26 23:17:30.499信息1---[main]org.hibernate.dialogue.dialogue:hh000400:使用方言:org.hibernate.dialogue.mysql57dialogue licensingservice_1|休眠:如果存在许可证,则删除表 licensingservice|u 1 | 2020-12-26 23:17:31.006信息1---[main]com.zaxxer.hikari.HikariDataSource:hikaripol-1-启动。。。 licensingservice|u 1 | 2020-12-26 23:17:32.010错误1---[main]com.zaxxer.hikari.pool.HikariPool:HikariPool-1-池初始化期间异常。 牌照服务1| licensingservice_1|com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链路故障 牌照服务1| licensingservice_1 |成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。 licensingservice_1|位于com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)~[mysql-connector-java-8.0.22.jar:8.0.22] licensingservice_1|位于com.mysql.cj.jdbc.exceptions.sqlexceptionmapping.translateException(sqlexceptionmapping.java:64)~[mysql-connector-java-8.0.22.jar:8.0.22]

我的码头工人

version : '3'
services:
  licensingservice:
    image: licensing/licensing-service-ms:0.0.1-SNAPSHOT
    ports:
      - "8080:8080"
    networks:
      - my-network
    volumes:
      - .:/vol/development
    depends_on:
      - mysqldbserver
      
  mysqldbserver:
    image: mysql:5.7
    ports:
      - "3307:3306"
    networks:
      - my-network
    environment:
      MYSQL_DATABASE: license
      MYSQL_ROOT_PASSWORD: Spartans@123 
    container_name: mysqldb
networks:
  my-network:
    driver: bridge
还有我的application.properties

spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.url=jdbc:mysql://mysqldb:3307/license
spring.datasource.username=root
spring.datasource.password=Spartans@123
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true

请尝试连接到端口3306。您将数据库容器上的端口3306公开给端口3307上的主机,但这不会改变同一网络中服务之间的通信

这一点在本节中进行了解释

默认情况下,Compose为应用程序设置单个网络。服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问该容器,并且可以通过与容器名称相同的主机名发现该容器

此外,您可以通过定义主机端口和容器端口之间的映射,选择将这些端口公开给外部世界。但是,这对同一网络内服务之间的通信没有影响:

请务必注意主机端口和容器端口之间的区别。[…]网络化服务对服务通信使用容器_端口。定义主机_端口后,也可以在swarm之外访问该服务


把答案标记为正确