SpringBoot docker连接到mysql docker容器

Posted

技术标签:

【中文标题】SpringBoot docker连接到mysql docker容器【英文标题】:SpringBoot docker connect to mysql docker container 【发布时间】:2019-08-04 13:19:22 【问题描述】:

我提取了 mysql docker 镜像并使用命令运行容器:

docker run --name myapp-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mydb -p 3306:3306 -d mysql:latest

此时本地的springBoot正在工作。与mysql连接:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root

现在我希望 springBoot 应用程序也位于同一台服务器上的单独 docker 容器上。为此,我正在使用 Dockerfile:

FROM openjdk:8-jdk-alpine
ADD target/myapp.jar myapp.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "myapp.jar"]

我从这张图片开始:

docker run --name myapp -p 8080:8080 -it myapp:latest

现在 springBoot 容器找不到 myslq 容器。 我试试:

docker run --name myapp -p 8080:8080 --link=myapp-mysql:mysql -it myapp:latest

但它再次无法连接到 mysql 容器。如何将springBoot容器连接到mysql容器?

我还尝试将 application.properties 更改为:

spring.datasource.url=jdbc:mysql://myapp-mysql:3306/mydb
spring.datasource.username=root
spring.datasource.password=root

并启动springBoot:

docker run --name myapp -p 8080:8080 --link=myapp-mysql:mysql -it myapp:latest

再次无法连接到数据库:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

【问题讨论】:

Spring Boot cannot connect to MySQLand exits in Docker/Docker compose的可能重复 【参考方案1】:

为了链接容器,我建议查看 docker-compose。

如果你不想使用 docker-compose 那么,

首先,在你的springboot属性文件中,将url改为:

spring.datasource.url=jdbc:mysql://[container-name]:3306/mydb

在你的情况下,

docker run --name myapp-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mydb -p 3306:3306 -d mysql:latest

容器名称:myapp-mysql

然后尝试运行这两个容器。

如果它不起作用,请查看 docker 网络并将容器放在同一网络中。

Docker Network Creation

【讨论】:

以上是关于SpringBoot docker连接到mysql docker容器的主要内容,如果未能解决你的问题,请参考以下文章

Docker 上的 Spring Boot 无法连接到 MySQL

Spring boot JDBC无法连接到docker容器中的mysql

从 Spring Boot 应用程序连接到 mysql 容器

docker compose:spring boot连接到mysql数据库被拒绝

Flyway 无法从 Docker-Container 连接到 MySQL

Spring Boot无法连接到同一网络的docker中的mysql