“无法创建到数据库服务器的连接,”Docker MySql和SpringBoot应用程序编写错误

x7rlezfr  于 2023-02-15  发布在  Mysql
关注(0)|答案(1)|浏览(110)

我已经创建了一个简单的 Spring 启动应用程序,通过Docker使用相同的网络与MYSQL通信。一旦我运行docker-composite up命令,则发生以下错误。java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up
https://i.stack.imgur.com/gwUuG.png

version: "3.8"
services:
  project:
    build: .
    ports:
      - "8080:8080"
    environment:
      -SPRING_DATASOURCE_URL: jdbc:mysql://mysqldb:3306/spring?autoReconnect=true&useSSL=false
    depends_on:
      - mysqldb
 
  mysqldb:
    image: mysql:8
    ports:
      - 33066:3306
    environment:
      - MYSQL_ROOT_PASSWORD=1234
      - MYSQL_DATABASE=spring
    volumes:
      - spring:/data/db
volumes:
 spring:

这是我的yaml文件

spring.datasource.url=jdbc:mysql://localhost:3306/spring?
serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.database=mysql
server.error.include-message=always
server.error.include-binding-errors=always
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = create

这是我的应用程序属性文件
我试着一遍又一遍地重新创建,修剪Docker中的所有文件(网络图像容器)。尝试通过终端创建网络。

9lowa7mx

9lowa7mx1#

如果您添加pom.xmlgradle配置和application.yml,则会更有帮助。但是,请确保具有以下内容:
1.与兼容版本的正确依赖关系:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.16</version>
 </dependency>

application.properties

server.port=8080
 spring.datasource.url=jdbc:mysql://<host>:3306/<dbname>
 spring.datasource.username=<username>
 spring.datasource.password=<password>

如果您在本地运行应用程序,则host将是localhost,如果您的spring Boot 在容器中,则应该是您提到的mysqldb
您的docker-compose.yml

version: '3'    # specify a version
services:
  mysqldb:     # container-name
    image: mysql:latest
    environment:
      - MYSQL_ROOT_PASSWORD=<password>
      - MYSQL_DATABASE=<dbname>
      - MYSQL_USER=<user-name>
      - MYSQL_PASSWORD=<password>

    volumes:
      - app-data:/var/lib/mysql

  spring-boot:
    ports:
      [8080:8080]
    build:
      context: ./
      dockerfile: Dockerfile

    depends_on:
      - mysqldb

volumes:
  app-data:

相关问题