Debian11下Bash脚本调用docker-compose失效问题求助
Docker Compose脚本错误排查与修复
错误根源
DOCKER_CONFIG是Docker官方定义的环境变量,用于指定Docker的配置目录路径,而非Compose配置文件路径。你将其赋值为docker-compose-test.yml(一个文件),导致Docker尝试在该"目录"下读取config.json,触发"not a directory"错误。- 后续的
mkdir错误是因为服务逻辑误用到了这个被错误赋值的变量,试图将其作为目录创建,但目标并非目录,因此失败。
修复方案
方案1:使用自定义变量名
修改脚本,替换掉冲突的环境变量名:
#!/bin/bash #start development # 自定义变量名,避免覆盖Docker官方环境变量 export MY_COMPOSE_CONFIG=${MY_COMPOSE_CONFIG:-docker-compose-test.yml} docker-compose -f "$MY_COMPOSE_CONFIG" build #./bin/db_init.sh docker-compose -f "$MY_COMPOSE_CONFIG" up
方案2:使用Compose官方环境变量
Docker Compose原生支持COMPOSE_FILE环境变量,可直接指定配置文件,无需在命令中添加-f参数:
#!/bin/bash #start development # 利用Compose官方环境变量指定配置文件 export COMPOSE_FILE=${COMPOSE_FILE:-docker-compose-test.yml} docker-compose build #./bin/db_init.sh docker-compose up
内容的提问来源于stack exchange,提问作者galvakojis
相关产品推荐
相关产品推荐

