You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行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"]

验证修复:

  1. 重新构建composer服务:docker-compose build composer
  2. 再次执行Laravel创建命令:docker-compose run composer create-project --prefer-dist laravel/laravel .

内容的提问来源于stack exchange,提问作者tamiilore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:10:04