Bash脚本实现Docker-Compose多文件动态启停功能需求
合并Docker Compose启停脚本并实现批量操作
以下是满足需求的compose.sh脚本,支持通过up/down参数执行对应操作,并自动遍历指定目录下的所有YAML文件:
#!/bin/bash # 定义Docker Compose文件目录 COMPOSE_DIR="/home/home/compose" # 检查命令参数 if [[ "$1" != "up" && "$1" != "down" ]]; then echo "用法: $0 [up|down]" exit 1 fi # 检查目标目录是否存在 if [[ ! -d "$COMPOSE_DIR" ]]; then echo "错误: 目录 $COMPOSE_DIR 不存在" exit 1 fi # 开启nullglob,避免无匹配文件时输出*.yml shopt -s nullglob # 遍历目录下所有yml文件执行对应操作 for yml_file in "$COMPOSE_DIR"/*.yml; do echo "正在处理文件: $yml_file" docker-compose -f "$yml_file" "$1" -d done # 关闭nullglob(可选,恢复默认行为) shopt -u nullglob
关键说明
- 参数校验:脚本会先检查传入的参数是否为
up或down,否则输出用法并退出 - 目录检查:确保目标YAML文件目录存在,避免后续操作报错
- 批量处理:通过
nullglob选项处理无匹配文件的情况,遍历所有.yml文件并执行docker-compose命令,-d参数用于后台启动(如果不需要后台运行可以移除) - 权限设置:创建脚本后记得赋予执行权限:
chmod +x compose.sh
使用方法
# 启动所有Compose服务 ./compose.sh up # 停止所有Compose服务 ./compose.sh down
内容的提问来源于stack exchange,提问作者CoderLuii
相关产品推荐
相关产品推荐

