Mysql 与Docker compose的通信链路故障

Mysql 与Docker compose的通信链路故障,mysql,jdbc,docker-compose,Mysql,Jdbc,Docker Compose,类似的问题解决不了我的问题 我正在尝试将我的应用程序连接到MySQL服务器,但没有成功。 我似乎找不到导致此连接失败的错误 这是完整的错误日志: 这是我的docker-compose.yml: version: '3.8' services: mysql-ricette: container_name: mysqlRicette image: mysql volumes: - ./mysql:/docker-entrypoint-initdb.d

类似的问题解决不了我的问题

我正在尝试将我的应用程序连接到MySQL服务器,但没有成功。 我似乎找不到导致此连接失败的错误

这是完整的错误日志:

这是我的docker-compose.yml:

version: '3.8'
services:
  mysql-ricette:
    container_name: mysqlRicette
    image: mysql
    volumes:
      - ./mysql:/docker-entrypoint-initdb.d
    ports:
      - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: ricette
      MYSQL_USER: user
      MYSQL_PASSWORD: password
  ricette-service:
    container_name: ricette
    build: ./ricette
    depends_on:
      - consul
      - mysql-ricette
      - kafka
      - zookeeper
这是我申请ricette服务的application.yml:

这是我想保存在数据库中的实体:

@Entity 
@Data @NoArgsConstructor
public class RicettaCompleta {

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id; 
    private String autore; 
    private String titolo; 
    private String preparazione; 
    
    public RicettaCompleta(String autore, String titolo, String preparazione) {
        this(); 
        this.autore = autore; 
        this.titolo = titolo; 
        this.preparazione = preparazione; 
    }
    
}
我知道这个错误意味着数据源配置有问题。但我不知道是什么。 是的,mysql ricette数据库实际上正在运行


请帮助我修复我一直遇到的错误。

您需要将mysql ricette链接到ricette服务。更新的yml文件如下所示。也可以在java代码中替换mysql url,即application.yml或application.properties,无论您与
jdbc一起使用:mysql://mysql-ricette:3306/ricette?serverTimezone=UTC

version: '3.8'
services:
  mysql-ricette:
    container_name: mysqlRicette
    image: mysql
    volumes:
      - ./mysql:/docker-entrypoint-initdb.d
    ports:
      - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: ricette
      MYSQL_USER: user
      MYSQL_PASSWORD: password
  ricette-service:
    container_name: ricette
    build: ./ricette
    depends_on:
      - consul
      - mysql-ricette
      - kafka
      - zookeeper
    links: 
      - mysql-ricette

com.mysql.jdbc.Driver
更改为
com.mysql.cj.jdbc.Driver
并将
mysql
更改为
mysql:5.7
,成功了。
我理解第一个更改,因为驱动程序已弃用,但我没有得到mysql驱动程序。

您可以发布数据源url吗?url:jdbc:mysql://mysql-ricette:3306/ricetteCan 您从主机连接到数据库?是的,我对数据库本身没有问题您如何初始化HikariDataSource?你能发布你的应用程序道具吗?可能驱动程序也不是最新的。在图片中使用“mysql”将使用最新版本,目前是8.x,但是如果您使用的驱动程序是“Connector/J 5.1”,我认为它不支持mysql 8.x。看看这个:。从
com.mysql.jdbc.Driver
切换到
com.mysql.cj.jdbc.Driver
不能解决这个问题,因为加载
com.mysql.jdbc.Driver
将加载
com.mysql.cj.jdbc.Driver