当前位置: 代码迷 >> 综合 >> wait-for-it.sh 踩坑之旅
  详细解决方案

wait-for-it.sh 踩坑之旅

热度:7   发布时间:2023-11-19 15:28:40.0

项目场景:

使用docker-compose部署项目时,多项目之间存在依赖管理,顺序启动使用wait-for-it.sh
下载地址


问题描述

各种问题,查了半天,记录之
把下载下来的wait-for-it.sh拖进Linux,兴高采烈的去执行./wait-for-it.sh,啪,第一个问题他来了


1、-bash: ./wait-for-it.sh: Permission denied


[root@localhost docker-compose]# ./wait-for-it.sh
-bash: ./wait-for-it.sh: Permission denied

很明显这是没有权限,简单,只需执行一下赋予权限语句

 chmod +x ./wait-for-it.sh

满心欢喜,在执行./wait-for-it.sh,啪,第二个问题出现了


2、: No such file or directory

[root@localhost docker-compose]# ./wait-for-it.sh         
: No such file or directory

没有这样的文件或目录?????
各种查,没有解决问题,最后发现了这位哥哥的帖子
大致意思就是说,wait-for-it.sh文件的格式有问题,需要在Linux里面重新设置一下

1、输入 vim wait-for-it.sh 打开wait-for-it.sh文件

2、输入 :set ff 回车 显示 fileformat=dos

3、输入 :set ff=unix 回车 就是告诉 vi 编辑器,使用unix换行符
4、输入 :wq 回车 退出保存


至此,问题基本解决,输入./wait-for-it.sh www.baidu.com:80 -- echo "baidu is up" 测试

[root@localhost docker-compose]# ./wait-for-it.sh www.baidu.com:80 -- echo "baidu is up" 
wait-for-it.sh: waiting 15 seconds for www.baidu.com:80
wait-for-it.sh: www.baidu.com:80 is available after 0 seconds
baidu is up

成功!!!

附件

和wait-for-it.sh同级目录下docker-compose文件

version: '3'services:
# mysqlmy_mysql:container_name: my_mysqlimage: mysql:5.7.34restart: alwaysports:- "3306:3306"volumes:- ./mysql/data:/var/lib/mysql- ./mysql/conf/my.cnf:/etc/my.cnfenvironment:- "MYSQL_DATABASE=root"- "MYSQL_ROOT_PASSWORD=root"- "TZ=Asia/Shanghai"# nacosmy_nacos:container_name: my_nacoshostname: my_nacosimage: nacos/nacos-server:latestrestart: alwaysports:- "8848:8848"environment:- "MODE=standalone"- "SPRING_DATASOURCE_PLATFORM=mysql"- "MYSQL_SERVICE_HOST=my_mysql"- "MYSQL_SERVICE_PORT=3306"- "MYSQL_SERVICE_USER=root"- "MYSQL_SERVICE_PASSWORD=root123"- "MYSQL_SERVICE_DB_NAME=snowy-cloud-nacos"depends_on:- my_mysql#后台test-app: #spring boot的服务名,服务名自定义#容器名称container_name: test-app#image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。image: java:8restart: alwaysenvironment:TZ: Asia/Shanghai#ports用于映射端口的标签。使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。ports:- "9001:9001"#挂载文件夹volumes:- ./backend/test-app.jar:/data/test-app.jar- ./wait-for-it.sh:/wait-for-it.sh#启动容器后执行的命令command: ["/wait-for-it.sh", "my_nacos:8848", "--", "java", "-jar", "/data/test-app.jar"]depends_on:- my_nacos
  相关解决方案