gpt4 book ai didi

java - Spring Boot + docker-compose + MySQL : Connection refused

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:33 28 4
gpt4 key购买 nike

我正在尝试设置一个 Spring Boot 应用程序,该应用程序依赖于 docker-compose 中名为 teste 的 MySQL 数据库。在发出 docker-compose up 之后,我得到:

Caused by: java.net.ConnectException: Connection refused (Connection refused)

我在 Linux Mint 上运行,我的 docker-compose 版本是 1.23.2,我的 Docker 版本是 18.09.0。

应用程序属性

# JPA PROPS
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy

spring.datasource.url=jdbc:mysql://db:3306/teste?useSSL=false&serverTimezone=UTC
spring.datasource.username=rafael
spring.datasource.password=password

spring.database.driverClassName =com.mysql.cj.jdbc.Driver

docker-compose.yml

version: '3.5'
services:
db:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_DATABASE=teste
- MYSQL_USER=rafael
- MYSQL_PASSWORD=password
ports:
- 3306:3306
web:
image: spring-mysql
depends_on:
- db
links:
- db
ports:
- 8080:8080
environment:
- DATABASE_HOST=db
- DATABASE_USER=rafael
- DATABASE_NAME=teste
- DATABASE_PORT=3306

和 Dockerfile

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

最佳答案

Docker compose 总是按照依赖顺序启动和停止容器,或者如果没有给出文件中的顺序。但是 docker-compose 不保证它会等到依赖容器运行。你可以refer此处了解更多详情。所以这里的问题是当你的 spring-mysql 容器试图访问数据库时你的数据库还没有准备好。因此,推荐的解决方案是您可以使用 wait-for-it.sh或类似的脚本来包装你的 spring-mysql 应用程序开始 ENTRYPOINT

例如,如果您使用 wait-for-it.sh,将上述脚本复制到项目根目录后,您的 Dockerfile 中的 ENTRYPOINT 应更改为以下内容:

ENTRYPOINT ["./wait-for-it.sh", "db:3306", "--", "java", "-jar", "app.jar"]

这里要考虑的另外两件重要的事情是:

  • 不要使用链接 deprecated您应该改用用户定义的网络。如果您没有明确定义任何网络,则 docker-compose 文件中的所有服务都将位于单个用户定义的网络中。因此,您只需从撰写文件中删除链接即可。
  • 如果您只在用户定义的网络中使用它,则不需要发布 docker 容器的端口。

关于java - Spring Boot + docker-compose + MySQL : Connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54145220/

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