无法从spring Boot 应用程序连接MYSQL Docker容器

hujrc8aj  于 2023-01-16  发布在  Mysql
关注(0)|答案(3)|浏览(294)

我有MYSQL容器运行,我能够执行它,并能够使用"mysql-h www.example.com-u root-p"从主机连接。我已经执行了"docker run--name = mysql-host-e MYSQL_ROOT_PASSWORD = root-d mysql:5.7.32"来运行docker映像。172.17.0.2 -u root -p". I have executed "docker run --name=mysql-host -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.32" to run the docker image.
但当我试图通过Spring Boot应用程序访问时,它会拒绝连接,下面是www.example.com中的属性application.properties
数据源。网址= jdbc:mysql://www.example.com172.17.0.2:3306/auditLog?createDatabaseIfNotExist=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&useSSL=false
spring.数据源.用户名= root
spring.数据源.密码=根
我正在运行我的jar,如下所示
java-jar服务-1.0.0.jarSpring配置位置=文件:///home/10662598/下载/实体搜索服务部署文件夹/实体搜索服务/配置/www.example.comapplication.properties

    • 获取时出错,原因是:java.net.ConnectException:连接被拒绝(连接被拒绝)**
ukqbszuj

ukqbszuj1#

您的问题可能是因为Sping Boot 应用程序无法访问数据库(MySQL),原因可能是因为它们不在同一网络中。

如果您的Sping Boot 应用程序在container内运行

从您的问题中,我看到您正在使用docker run...运行容器,因此当您使用该命令启动MySQL和Sping Boot 应用程序时,它们不在同一网络中。
解决方案是,首先创建一个网络,然后启动MySQL和Spring应用程序在该网络中运行:

docker network create my-net

然后像往常一样启动container,但请记住将container添加到刚刚创建的网络中:

docker run ... --network my-net

现在你的容器在同一个网络中,应该可以互相访问,你可以通过执行Sping Boot 应用程序来验证这一点,并尝试使用容器名称(和端口)将curl连接到Mysql容器:

curl <mysql_container_name>:3306

如果主机上正在运行Sping Boot 应用程序

然后只需确保将Mysql端口Map到主机,并使用localhost:<mapped_port>进行连接
祝你好运:)

atmip9wb

atmip9wb2#

这里,您必须在容器之间创建一个网络层。
1.首先创建网络层
网络创建Spring-mysql网
1.构建并运行MySql Docker映像
docker运行--名称mysql -d -e MySQL根密码=根-v mysql:/var/lib/mysql --网络Spring-mysql-net mysql:8
1.构建您的 Spring Boot 或任何API
docker构建-t restapi。
1.在创建网络的上启动container
docker容器运行--网络Spring-mysql-net --名称mysql-restapi-容器-p 8080:8080 -d restapi

tmb3ates

tmb3ates3#

有点晚了,但我认为你需要转发端口3306在本地机器到包含端口3306尝试这个
文档管理器运行--名称= mysql主机-p 3306:3306 -e MySQL根密码=根-d mysql:5.7.32

相关问题