2020.12.10 dockercompose.xml的depends-on没有等到mysql等容器“ready“就开始执行其他程序导致出错

在Docker环境中,由于`docker-compose.yml`的`depends_on`配置仅确保容器启动,不保证数据库"ready",导致SpringBoot应用尝试连接未准备好的MySQL容器时出错。解决方案是使用`wait-for-postgres.sh`脚本来确保依赖服务完全启动后再执行应用程序。
摘要由CSDN通过智能技术生成

例如:

我有一个springboot项目连接数据库,并且对数据库进行插入数据:
Dockerfile文件:

FROM java:8-jdk-alpine
WORKDIR /app
ADD ./demo-0.0.1-SNAPSHOT.jar /app/app.jar
EXPOSE 3310
ENTRYPOINT [ "java","-jar","app.jar" ] 

其中demo-0.0.1-SNAPSHOT.jar是我的springboot文件使用mvn package打包后的可执行jar包,在springboot的application.yml或者application.properties配置文件中对jdbc的url使用:其中本来的localhost:端口号变成了与docker-compose.yml相对应的mysql的服务。
在这里插入图片描述

我的docker-compose.yml文件:

version: "3.7"

services: 
 mysql:  #也对应虚拟ip地址,mysql会在其他app表示mysql容器的地址
  image: mysql:5.7 
  working_dir: /docker-entrypoint-initdb.d
  volumes: 
   - db_date:/mnt 
  environment: 
   MYSQL_ROOT_PASSWORD: 123456
   MYSQL_DATABASE: tdBackupServer
  restart: always
 app:
  bu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值