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

Docker ENTRYPOINT报“No such file or directory”问题排查求助

Docker ENTRYPOINT 启动程序失败的问题分析与解决

嘿,这个报错的根源很明确——你ENTRYPOINT的JSON数组参数格式写错了!

为什么会出现No such file or directory?

你写的ENTRYPOINT是:

ENTRYPOINT ["/usr/bin/app", "-s" "/scene/scene.json", "-c", "/scene/simulator.json", "--headless", "1", "-t"]

注意看"-s" "/scene/scene.json"这部分——你把-s和它对应的参数/scene/scene.json合并成了一个数组元素!Docker会把整个字符串/usr/bin/app,-s /scene/scene.json(没错,它会把这个带空格的内容当成一个完整的可执行文件路径)去查找,自然找不到这个不存在的文件,所以才会报[/usr/bin/app,: No such file or directory的错误。

怎么修复?

把每个命令参数都单独拆成数组的一个元素,修正后的Dockerfile应该是这样:

FROM archlinux
RUN pacman -Syu --noconfirm
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ADD app /usr/bin
# 每个参数单独作为数组项,包括-s和它的路径参数
ENTRYPOINT ["/usr/bin/app", "-s", "/scene/scene.json", "-c", "/scene/simulator.json", "--headless", "1", "-t"]
CMD ["0"]

额外的小提示

  1. ENTRYPOINT和CMD的配合逻辑:用JSON数组格式时,CMD里的内容会自动追加到ENTRYPOINT命令的末尾作为参数。比如你现在的配置,容器默认启动时会执行:

    /usr/bin/app -s /scene/scene.json -c /scene/simulator.json --headless 1 -t 0
    

    你在docker run最后加的0其实是覆盖了CMD里的内容,效果和默认一致,后续如果要改默认参数,直接调整CMD就行,不用每次run都手动加。

  2. 确保程序可执行:如果修正后还是有问题,建议在Dockerfile里加一步,确保/usr/bin/app有执行权限:

    RUN chmod +x /usr/bin/app
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:02:29