簡體   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