compose.yaml中配置应用程序和mysql数据库-无法打开jdbc连接

xt0899hw  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(403)

我在下面的docker-compose.yaml文件中配置了一个应用程序和mysql数据库。当两个服务都启动时,当发送http请求时,应用程序无法打开到db的连接。当app和mysql db在不同的容器中定义时,请求成功。我相信这是一个简单的docker组合配置。

version: '3.7'

services:
  database:
    image: mysql:5.7
    container_name: docker_test-device-telemetry-mysql
    command: --explicit_defaults_for_timestamp
    environment:
      MYSQL_ROOT_PASSWORD: 12345
      MYSQL_ALLOW_EMPTY_PASSWORD: "no"

    volumes:
    - ./initdb.d:/docker-entrypoint-initdb.d
    ports:
    - "6603:3306"

  device-telemetry:
    image: 224713337986.dkr.ecr.eu-west-1.amazonaws.com/device-telemetry:2.5.0
    container_name: docker_test-device-telemetry-app
    volumes:
      - ./application.yaml:/application.yaml
      - ./bootstrap.yaml:/bootstrap.yaml
    ports:
      - "7857:7847"
    depends_on:
      - database

“timestamp”:“2018-10-18t20:46:17.654+0000”,“status”:500,“error”:“internal server error”,“exception”:“org.springframework.transaction.cannotcreatetransactionexception”,“message”:“无法为事务打开jdbc连接;嵌套的异常是java.sql.sqlexception:无法创建poolableconnectionfactory(通信链接失败)\n\n上一个成功发送到服务器的数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。)“,}

vybvopom

vybvopom1#

问题在于对application.yaml中包含db details的url的引用
应该是的
网址:jdbc:mysql://database:3306/local_telemetry
其中database是docker-compose.yaml中定义的数据库的名称
而不是
网址:jdbc:mysql://127.0.0.1:3306/本地\u遥测

相关问题