gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:28:39 29 4
gpt4 key购买 nike

我今天刚刚开始探索 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 时,它能够连接数据库表并对其执行 CRUD。但是,当我尝试将其部署在 docker 上并与 MySQL 容器链接时,它会抛出 Connection Refused 错误。我的 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 网络 (docker network create -dbridge sql_spring_network) 将两者部署在同一容器网络上,但错误仍然存​​在。

最佳答案

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

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

关于java - Spring boot jar docker 部署抛出与 MySQL 容器的连接异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164845/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com