GitLab CI WSL Shell Runner执行docker-compose up报错问题求助
问题排查与解决步骤
- 检查CI任务中工作路径的大小写
WSL挂载的Windows路径会保留原路径的大小写规则,若你配置的/pathToComposeFile对应实际路径包含大写字母,旧版本docker-compose会将工作目录名作为构建镜像的默认前缀,触发镜像名格式报错。你手动执行时大概率使用的是全小写的WSL原生路径,和CI执行上下文不一致。
解决方案:将CI任务中的工作路径替换为全小写的绝对路径,或显式指定构建镜像的完整标签,修改docker-compose.yml的build配置:build: context: cron/. tags: - cron_image:latest - 显式指定docker-compose项目名
部分CI runner会默认注入带大写的环境变量(比如CI_PROJECT_NAME),旧版docker-compose会默认用项目名作为镜像前缀,哪怕你配置里没有写变量也会调用该参数。
解决方案:修改CI任务的执行命令,强制指定全小写的项目名:docker-compose -p my_lowcase_project up - 对齐CI执行上下文与本地环境
在CI任务的script段增加排查命令,确认runner执行时的环境和你本地手动执行的环境一致:# 输出当前路径检查大小写 pwd # 输出docker-compose版本,确认和本地版本一致 docker-compose -v # 输出当前目录文件,确认配置文件正确加载 ls -la - 更换docker-compose调用方式
docker-compose V1已经停止维护,对大小写、WSL环境的适配有已知bug,你可以将CI命令替换为Docker V2原生的compose命令:docker compose up
内容的提问来源于stack exchange,提问作者Jan-Timo Hesse
相关产品推荐
相关产品推荐

