在docker上运行的mysql容器可以';无法连接spring boot java api服务
我有一个mysql,它正在docker容器上运行。使用此命令拉取并运行容器在docker上运行的mysql容器可以';无法连接spring boot java api服务,java,spring,spring-boot,docker,Java,Spring,Spring Boot,Docker,我有一个mysql,它正在docker容器上运行。使用此命令拉取并运行容器 $docker container run--namecloud--networkemployee-e MYSQL\u ROOT\u PASSWORD=ROOT-e MYSQL\u DATABASE=bootdb-d MYSQL:5.7 位于本地的spring boot应用程序-我正在尝试在java应用程序和mysql容器之间建立连接: 配置属性: spring.datasource.url=jdbc:mysql:
spring.datasource.url=jdbc:mysql://cloud/bootdb?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.platform=mysql
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto = create
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
错误:
当你说-Spring Boot应用程序正在本地运行时-我假设它在docker之外运行。
尝试以下选项 步骤1:再次创建mysql容器,暴露端口:3306
docker run--name cloud--network employee-p3306:3306-e MYSQL\u ROOT\u PASSWORD=ROOT-e MYSQL\u DATABASE=bootdb-d MYSQL:5.7
步骤2:使用验证mysql是否在公开的端口上运行,并且您可以访问它。从MY-SQL GUI工具获取帮助
步骤3:更新spring启动配置文件。spring.datasource.url=jdbc:mysql://localhost:3306/bootdb?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false
您需要公开端口并通过本地主机连接,或者将Spring Boot应用程序也放在docker容器中,并在同一网络中运行,以便能够这样连接到容器上。嘿@戴纳姆先生,谢谢你的回复,我也做了那部分,但仍然有错误。在两个容器之间建立连接:它启动连接,然后在一分钟后停止。注意-在构建spring应用程序时,它显示的是build faliure,如果没有jar fie,我无法构建图像。您好@fly2matrix谢谢您的回复,我已经按照您的步骤进行了操作,并且成功了!