【问题标题】:Docker MySQL: Communication link failureDocker MySQL:通信链路故障
【发布时间】:2020-04-24 19:49:02
【问题描述】:

我用数据库初始化创建了一个 mysql 的 docker 容器。现在我正在尝试将我的本地 Spring Boot 项目与容器中的那个 mysql 连接起来。它总是给我通信链路故障。

application.properties

spring.datasource.url = jdbc:mysql://localhost:3306/erp
spring.datasource.username = sa
spring.datasource.password = password

我也尝试使用容器名称更改本地主机,但仍然没有任何效果。

编辑:1

我已经克隆了这个repository 并尝试将这个项目与 docker mysql 连接起来。错误仍然相同。我相信我错过了一些东西。

【问题讨论】:

  • 您能否提供有关 docker-compose 文件或如何运行 mysql 容器的更多详细信息?
  • 您是如何启动数据库容器和应用程序容器的?你在使用 docker-compose 吗?最有可能的问题是在spring.datasource.url = jdbc:mysql://localhost:3306/erp 中使用localhost
  • @MickaelB。我没有 docker-compose 文件。创建容器后,我使用此命令运行容器docker start d8(id of my container)
  • 也许它们不在同一个网络中,如果您尝试使用--network="host" 运行两个容器并公开您的数据库端口,它可以工作
  • 我还没有创建任何spring项目的容器。我只有一个空的mysql容器,里面有数据库。现在我正在尝试在本地运行我的项目并访问 docker 容器 mysql 的数据库

标签: mysql spring docker docker-compose dockerfile


【解决方案1】:

我解决了这个问题。在 docker VM 之外无法访问我的容器。所以我必须使用以下标志来--publish 6603:3306。 6603端口是本地PC的端口,将直接与运行mysql的容器3306端口连接。

docker run --name mysql-standalone -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password --publish 6603:3306 -d mysql:5.6
spring.datasource.url = jdbc:mysql://localhost:6603/test

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2020-09-03
    • 2012-05-27
    • 2014-12-30
    相关资源
    最近更新 更多