繁体   English   中英

Spring Boot jar docker 部署抛出与 MySQL 容器的连接异常

[英]Spring boot jar docker deployment throwing Connection Exception with MySQL Container

我今天刚刚开始探索 docker,我一直在尝试启动由 MySQL DB 支持的 Spring Boot Web 应用程序。

我拉了一个 MySQL 容器并使用以下命令运行它:

docker run -t --name mysql-docker-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=**** -e MYSQL_DATABASE=spring_app_db -e MYSQL_USER=app_user -e MYSQL_PASSWORD=**** -d mysql

我的application.properties文件:

spring.datasource.url=jdbc:mysql://0.0.0.0:3306/spring_app_db?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
spring.datasource.username=app_user
spring.datasource.password=test123

spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

有了这个,当我在 IDE 中运行 Spring Boot 时,它能够连接并在 db 表上执行 CRUD。 但是,当我尝试在 docker 上部署它并与 MySQL 容器链接时,它会引发连接拒绝错误。 我的 Dockerfile:

FROM openjdk:11
LABEL maintainer="baljinder@gmail.com"
VOLUME /tmp
EXPOSE 8080
ADD target/demo-0.0.1-SNAPSHOT.jar bootmysql.jar
ENTRYPOINT ["java", "-jar", "bootmysql.jar"]

我用来运行引导的 docker 映像的命令:

docker run -t --name spring-jpa-container -p 8080:8080 --link mysql-docker-container:mysql spring-jpa-app

有人可以帮忙解决这个问题。 我尝试通过创建docker network create -d bridge sql_spring_network网络( docker network create -d bridge sql_spring_network )将两者部署在同一个容器网络上,但错误仍然存​​在。

使用--link标志使用容器的链接时。 “链接”容器可用作正在运行的容器中的主机及其容器名称。 因此,在您的情况下,mysql 容器在您的应用程序容器中可用,主机名为mysql

因此,您的数据库 url 应该是: jdbc:mysql://mysql:3306/spring_app_db?autoReconnect=true&failOverReadOnly=false&maxReconnects=10

用:

jdbc:mysql://mysql-docker-container:3306/spring_app_db?autoReconnect=true&failOverReadOnly=false&maxReconnects=10

代替:

jdbc:mysql://0.0.0.0:3306/spring_app_db?autoReconnect=true&failOverReadOnly=false&maxReconnects=10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM