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

Docker容器初始化后执行脚本失败:无法识别/bin/bash命令

问题解决:Docker Compose中执行初始化脚本报错"unrecognised command '/bin/bash'"

核心原因

flagsmith/flagsmith:latest镜像内置了自定义的ENTRYPOINT启动脚本,而非默认的shell环境。当你在docker-compose.yml中设置command时,该命令会被当作ENTRYPOINT脚本的参数传入,而非直接作为独立命令执行,因此ENTRYPOINT脚本无法识别/bin/bash这个参数,导致报错。

解决方案

方案1:覆盖ENTRYPOINT为bash并执行脚本

直接将容器的ENTRYPOINT设置为bash,指定要执行的脚本。这种方式会替换原镜像的ENTRYPOINT,若执行完脚本后需要保留容器运行,需在脚本末尾添加原镜像的启动命令(可通过docker inspect flagsmith/flagsmith:latest查看原CMD/ENTRYPOINT):

services:
  flagsmith:
    image: flagsmith/flagsmith:latest
    volumes:
      - ./init_flagsmith.sh:/init_flagsmith.sh
    entrypoint: ["/bin/bash"]
    command: ["/init_flagsmith.sh"]

方案2:用sh -c串联脚本与原启动命令

如果需要执行初始化脚本后继续启动Flagsmith服务,推荐用sh -c将脚本执行和原启动逻辑串联,既保留原镜像的启动流程,又能执行自定义脚本:

services:
  flagsmith:
    image: flagsmith/flagsmith:latest
    volumes:
      - ./init_flagsmith.sh:/init_flagsmith.sh
    command: ["sh", "-c", "chmod +x /init_flagsmith.sh && /init_flagsmith.sh && /usr/local/bin/docker-entrypoint.sh"]

注:/usr/local/bin/docker-entrypoint.sh是Flagsmith镜像默认的ENTRYPOINT脚本路径,若不确定可通过docker inspect flagsmith/flagsmith:latest | grep -A 10 Entrypoint确认。

额外注意事项

  • 确保挂载的init_flagsmith.sh在容器内路径正确,且拥有可执行权限(可在脚本执行前添加chmod +x,或本地先执行chmod +x init_flagsmith.sh)。
  • 若脚本需要依赖容器内的环境变量,需确保变量已在docker-compose.yml的environment字段中正确配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:21:01