在共享卷上运行docker上的shell脚本

我有一个docker容器与主机有共享卷。 卷安装在根主文件夹中。 在那个文件夹中,我有一个shell脚本,我想在容器启动并运行后运行。

我正在使用这个命令:

docker exec -i localserver_web_1 sh /root/scripts/define_applications.sh 

但我得到这个回应:

 sh: 0: Can't open /root/scripts/define_applications.sh 

当我从容器中运行脚本时,脚本工作正常。 它说它在/ root / scripts /中。 我的权限设置为777.我可能做错了什么?

可以肯定的是,在命令行中使用tty作为根用户身份执行exec操作:

 docker exec -it -u root localserver_web_1 sh -c '/root/scripts/define_applications.sh' 

如果不起作用,通过docker exec至less检查它的存在和内容:

 docker exec -it -u root localserver_web_1 sh -c 'ls -alrt /root/scripts' docker exec -it -u root localserver_web_1 sh -c 'cat /root/scripts/define_applications.sh' 

还要检查图像以检查其ENTRYPOINT (类似于对其CMD的检查 ):

 docker inspect --format='{{.Config.Entrypoint}}' <image:tag> 

OP Jon Schwartz 在评论中证实:

这是一个pebkac错误。
该脚本实际上称为define-applications.sh ,而不是define_applications.sh
cat线向我展示了我的问题。 当它能通过ls看到脚本时,我知道它应该能够到达它。 当它不能cat时,我意识到发生了什么事情。