运行docker-compose run composer命令时出现sh: missing ]错误求助
解决执行Composer命令时的“sh: missing ]”错误
这个错误的核心原因是你的composer服务构建所用的composer.dockerfile中,ENTRYPOINT或CMD的shell脚本存在语法错误(括号未正确闭合),比如条件判断语句里的[]配对不完整。
排查与修复步骤:
- 打开
./dockerfiles/composer.dockerfile文件,重点检查ENTRYPOINT、CMD指令里的shell逻辑部分。 - 常见错误场景:
- 条件判断(如
if [ ... ])缺少闭合的] - 在Alpine镜像(默认用ash而非bash)中错误使用bash特有的
[[ ]]语法
- 条件判断(如
- 推荐的最简composer.dockerfile写法(避免shell语法问题):
FROM composer:latest ENTRYPOINT ["composer"] CMD ["help"]
如果需要自定义shell逻辑,确保语法严谨(以Alpine环境为例):
FROM alpine:latest RUN apk add --no-cache php-cli php-zip wget unzip RUN wget https://getcomposer.org/installer -O composer-setup.php RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer # 确保括号配对完整,符合ash语法 ENTRYPOINT ["/bin/sh", "-c", "if [ -f /var/www/html/composer.json ]; then composer install; else $@; fi"]
验证修复:
- 重新构建composer服务:
docker-compose build composer - 再次执行Laravel创建命令:
docker-compose run composer create-project --prefer-dist laravel/laravel .
内容的提问来源于stack exchange,提问作者tamiilore
相关产品推荐
相关产品推荐

