wait-for-it.sh 踩坑之旅
项目场景:使用docker-compose部署项目时,多项目之间存在依赖管理,顺序启动使用wait-for-it.sh下载地址问题描述各种问题,查了半天,记录之把下载下来的wait-for-it.sh拖进Linux,兴高采烈的去执行./wait-for-it.sh,啪,第一个问题他来了1、-bash: ./wait-for-it.sh: Permission denied[root@localho
项目场景:
使用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:
# mysql
my_mysql:
container_name: my_mysql
image: mysql:5.7.34
restart: always
ports:
- "3306:3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf/my.cnf:/etc/my.cnf
environment:
- "MYSQL_DATABASE=root"
- "MYSQL_ROOT_PASSWORD=root"
- "TZ=Asia/Shanghai"
# nacos
my_nacos:
container_name: my_nacos
hostname: my_nacos
image: nacos/nacos-server:latest
restart: always
ports:
- "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:8
restart: always
environment:
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
更多推荐
所有评论(0)