当前位置: 首页 > 知识库问答 >
问题:

通用域名格式。mysql。希杰。jdbc。例外。通信异常:docker中的通信链路故障

弓明亮
2023-03-14

我试图按项目进行dockerize,但是当我试图运行docker-comush up时,我的数据库会因为错误而失败:com.mysql.cj.jdbc.exceptions.通信异常:通信链接失败。我尝试了许多解决方案,但都不起作用。

我的码头工人。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

还有我的application.properties文件

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

共有1个答案

乜清野
2023-03-14

你的配置比你需要的多得多。我猜您正在尝试解决这个问题,并尝试任何可能的解决方案:)
下面是“清理”版本的compose文件。我删除了所有不必要的东西(把你知道需要的东西放回去)。

你能指出为什么这个配置会起作用吗?;)

问题是您为数据库服务定义了自定义容器名称mysql,但在连接中仍然使用数据库名称。因此,您需要选择其中一个并在连接中使用:从数据库中删除容器名称声明(如下代码所示),或者将连接字符串更改为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
 类似资料:
  • 我有一个使用Tomcat和MySQL的生产服务器。今天,所有网站都停止了与各自数据库的连接。 重新启动Tomcat时,显示无法为所有网站/数据库创建连接池。以下是错误日志(针对一个网站): 以及根的含量。xml是: 这个问题从今天开始,我已经没有选择了。它可能在几个月(或几年)内运行良好。 我已经尝试从url参数中删除"serverTimezone",使用服务器的IP而不是127.0.0.1和其他

  • 我正在尝试将我的Spring引导jar与谷歌云SQL(MySQL 5.7,mysql-link 8.0.18)数据库连接。我正在gcp中的centos 7 VM中部署我的jar。 当我启动服务器时,我得到了上面提到的错误。堆栈跟踪是

  • 我们正在运行一个带有Spring Hibernate MySql的J2EE应用程序,该应用程序在内部使用C3P0和Connector/J进行连池。 C3P0 C3P0配置 我的应用程序在一段时间后内部调用存储过程,我遇到以下错误 错误日志 现在,当我查看数据库日志时,我发现大多数查询都处于“创建排序索引”状态,如下所示 有人能帮我吗... 编辑 1.c3p0初始化日志

  • 我试图连接我的java应用程序与SQL数据库和当我点击保存按钮它给我以下错误 这是我的密码

  • 我有一个带有JDBC mysql连接的服务器,但每天早上检查服务器时都会出现这样的错误: 在com.mysql.jdbc.mysqlio.readfly(mysqlio.java:1395)在com.mysql.jdbc.mysqlio.reuseandreadpacket(mysqlio.java:1539)在com.mysql.jdbc.mysqlio.checkerrorpacket(mys

  • 我正在与spring boot、hibernate和MySQL合作。在运行应用程序时,它按照预期运行得很好。但是在制作docker-compose文件并使用mysql docker映像运行app docker映像时,它会出现这个错误。 错误com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败java.net.ConnectEx