【问题标题】:Microservice can not connect to MySQL running in Docker container微服务无法连接到在 Docker 容器中运行的 MySQL
【发布时间】:2021-12-27 16:50:58
【问题描述】:

我试图在 MacOs 上本地运行我的 Java 微服务并连接到在 Docker 容器中运行的 MySQL db,但出现错误: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

我的 docker-compose.yml 看起来像这样:

version: "3.1"
services:
  mysql:
    image: mysql
    container_name: mysql_v.0.1
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    env_file:
      - .mysql-dev-env
    ports:
      - 33060:33060

但是我能够连接到 mysql 并通过 docker 本身创建 dbs:

docker exec -it mysql_v.0.1
mysql -u root -p

微服务有这样的 application.dev.yml 配置:

db:
  pool.size.maximum: 30
  connection.idle.minimum: 10
  widget:
    url: jdbc:mysql://localhost:33060/dev_widget_platform?characterEncoding=UTF-8&useUnicode=yes&autoReconnect=true
    user: root
    password: pass

我正在尝试通过 MySQL Workbench 连接到 db,它也没有成功。 似乎我需要应用一些网络技巧,但我是 docker 和 MySQl 的新手。

【问题讨论】:

  • 你能检查一下 docker 容器是否真的在你主机上的 33060 端口上监听,比如 netstat -anp | grep 33060 甚至 telnet 33060 (但不确定它们是否在 macos 上工作)?您也可以查看docker inspect mysql_v.0.1 以查看容器的端口映射,这可能会有所帮助..
  • docker inspect mysql_v.0.1 带入 "NetworkSettings": "Ports": { "3306/tcp": null, "33060/tcp": [ { "HostIp": "0.0.0.0", “主机端口”:“33060”}]}
  • 您的ports: 将主机端口33060 转发到容器端口33060,但该容器端口上没有任何监听; MySQL 容器将始终侦听默认端口 3306。尝试使用标准端口作为第二个端口号更改 ports: ['33060:3306']
  • 我按照您的建议进行了更改,但仍然无法正常工作。现在我的 NetworkSettings: "Ports": { "3306/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "33060" } ], "33060/tcp": null } 看起来我在做出了什么问题
  • 你能显示 env_file: .mysql-dev-env,看来你应该配置:MYSQL_ROOT_HOST: '%'。配置接受来自远程服务器/客户端的连接

标签: java mysql spring docker


【解决方案1】:

除非您在本地使用 SSL,否则将其添加到连接字符串的末尾

&useSSL=false

这样就变成了

url: jdbc:mysql://localhost:33060/dev_widget_platform?characterEncoding=UTF-8&useUnicode=yes&autoReconnect=true&useSSL=false

【讨论】:

  • 试过了,没用
猜你喜欢
  • 2020-09-28
  • 2021-07-02
  • 2020-09-06
  • 1970-01-01
  • 2020-02-18
  • 2019-10-08
  • 2017-06-02
  • 2022-01-16
  • 2021-10-21
相关资源
最近更新 更多