我想获得一个带有docker-compose exec [service_name] [shell]的交互式提示,如果第一个不存在,则回退到另一个shell。

我试图运行以下命令:
docker-compose exec [service_name] "(which zsh && zsh) || (which bash && bash) || (which sh && sh)"
但是我得到了这个错误:
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"\\\"(which zsh && zsh) || (which bash && bash) || (which sh && sh)\\\"\": executable file not found in $PATH"
如果我跑步
docker-compose exec [service_name] bash(zsh / bash / sh)

它会打开一个bash提示,然后在我运行的容器内
(which zsh && zsh) || (which bash && bash) || (which sh && sh)
并且工作正常,它将 shell 更改为zsh。

最佳答案

目前尚不清楚容器内的命令实际上是什么。如果存在像/bin/sh这样的入口点,那么您的命令将需要为-c "command"。由于我没有您的docker-compose设置,因此以下是一个类似的docker设置:

docker run -ti --entrypoint /bin/sh --rm alpine -c \
  "(which zsh && zsh) || (which bash && bash) || (which sh && sh)"

关于docker - docker-compose exec失败:在$ PATH中找不到可执行文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42697785/

10-12 23:43