【问题标题】:Spring Boot container cannot connect to My SQL containerSpring Boot 容器无法连接到 My SQL 容器
【发布时间】:2022-11-06 17:24:57
【问题描述】:

我已阅读与该问题相关的所有问题并控制了所有要点。我的代码似乎一切正常,但无论如何都无法连接。 尝试从容器连接时出现 CONNECTION REFUSED 错误。 (顺便说一句。当我更改 URL 并尝试从 localhost 连接时,一切都很好)

我的java项目

spring:
  datasource:
   url: jdbc:mysql://mysqldb:3306/bootdb
   username: root
   password: root
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: update
    database-platform: org.hibernate.dialect.MySQL5Dialect
    generate-ddl: true

我的 docker-compose 文件

version: "3"
services:
  mysqldb:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: bootdb
    networks:
      - testnetwork
  employee-jdbc:
    image: bago1/student:latest
    restart: always
    build: .
    ports:
      - 8080:8080
    networks:
      - testnetwork
    depends_on:
      - mysqldb
    links:
      - mysqldb
networks:
  testnetwork:

当我将 URL 编辑为

url: jdbc:mysql://mysqldb:3306/bootdb
  1. 数据库工作正常
  2. 它们在同一个网络上
  3. 语法没问题

【问题讨论】:

  • 即使对于容器部署,这 url: jdbc:mysql://mysqldb:3306/bootdb 不应该是 url: jdbc:mysql://localhost:3306/bootdb 吗?
  • 不。 jdbc:mysql://localhost:3306/bootdb 当我从本地主机调用时工作
  • 如果您通读 Compose 日志,应用程序是否会在数据库准备好之前尝试连接? links: 选项是不必要的,可能会激活过时的 Docker 网络模式;删除它有什么不同吗? (您还应该能够摆脱所有 networks: 块,但这不会产生功能上的差异。)
  • 我也没有使用网络和链接。这不是问题

标签: java mysql docker kubernetes devops


【解决方案1】:

在 docker compose 中添加 hostname 字段,如下所示:

version: "3"
services:
  mysqldb:
    image: mysql
    hostname: mysqldb
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: bootdb
  employee-jdbc:
    image: bago1/student:latest
    restart: always
    build: .
    ports:
      - 8080:8080
    depends_on:
      - mysqldb
    links:
      - mysqldb

(ps:不需要添加networks字段,使用docker-compose会自动为你的服务创建一个网络)

(PS2:使用图像时使用标签是一个好习惯(而不是使用 mysql:latest))

【讨论】:

    【解决方案2】:

    删除 MySQL 容器的端口配置并插入:

        expose:
          - 3306
    

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 2019-11-25
      • 1970-01-01
      • 2020-12-23
      • 2021-04-04
      • 2017-11-10
      • 2022-11-01
      • 2021-12-23
      • 2020-01-29
      相关资源
      最近更新 更多