java 通信异常:对接器中的通信链路故障

7rtdyuoh  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(165)

我试图按项目停靠,但当我尝试运行停靠组合起来,我的数据库得到错误失败:通信异常:通讯线路故障。我试过很多方法,都不管用。
我的docker-compose. yml文件:

version: "3"
services:

  database:
    platform: linux/x86_64
    container_name: 'mysql'
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_PASSWORD: p@ssword
      MYSQL_USER: testUser
      MYSQL_DATABASE: testDatabase
    ports:
      - "3306:3306"
    networks:
      - mysql-db
  maildev:
    image: maildev/maildev
    ports:
      - "1080:80"
  web:
    build: .
    ports:
      - "8080:8080"
    networks:
      - mysql-db
    depends_on:
      - database
    environment:
      SPRING_DATASOURCE_PASSWORD: p@ssword
      SPRING_DATASOURCE_USER: testUser
      SPRING_DATASOURCE_NAME: testDatabase
      SPRING_DATASOURCE_URL: jdbc:mysql://database:3306/testDatabase
    links:
      - database
networks:
  mysql-db:
    driver: bridge

还有我的www.example.com文件:application.properties file:

spring.datasource.password=p@ssword
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://database:3306/testDatabase
spring.datasource.username=testUser
spring.mail.host=localhost
spring.mail.port=1025
spring.mail.username=hello
spring.mail.password=hello
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.show_sql=true
spring.jpa.properties.format_sql=true
spring.jpa.logging.level.org.hibernate.type=trace
spring.jpa.logging.level.org.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.logging.mail.smtp.ssl.trust=*
spring.jpa.logging.mail.smtp.auth=true
spring.jpa.logging.mail.smtp.starttls.enable=true
spring.jpa.logging.mail.smtp.connectiontimeout=5000
spring.jpa.logging.mail.smtp.timeout=3000
spring.jpa.logging.mail.smtp.writetimeout=5000
logging.level.org.hibernate.SQL=TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
svmlkihl

svmlkihl1#

你的配置比你需要的要多得多。我猜你是在试图解决这个问题,并尝试任何可能的解决方案:)
因此,贝娄是“清理”版本的组成文件。我删除了所有不必要的(把任何你知道你需要)。
你能看出为什么这个配置会起作用吗?)
问题是您为database服务定义了自定义container_name mysql,但在连接中您仍然使用database name,因此您需要选择其中一个并在连接中使用:从数据库中删除container_name声明(如下面的代码所示)或将连接字符串更改为jdbc:mysql://mysql:3306/testDatabase

version: "3"
services:
  database:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_PASSWORD: p@ssword
      MYSQL_USER: testUser
      MYSQL_DATABASE: testDatabase
  maildev:
    image: maildev/maildev
  web:
    build: .
    environment:
      SPRING_DATASOURCE_PASSWORD: p@ssword
      SPRING_DATASOURCE_USER: testUser
      SPRING_DATASOURCE_NAME: testDatabase
      SPRING_DATASOURCE_URL: jdbc:mysql://database:3306/testDatabase
    links:
      - database

相关问题