Quiero obtener un aviso interactivo con docker-compose exec [service_name] [shell] y recurrir a otro shell si el primero no existe.
Intenté ejecutar el siguiente comando:
docker-compose exec [service_name] "(which zsh && zsh) || (which bash && bash) || (which sh && sh)"
pero tengo este error:
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"
si corro
docker-compose exec [service_name] bash (zsh/bash/sh)
abre un indicador de bash y luego dentro del contenedor que ejecuto
(which zsh && zsh) || (which bash && bash) || (which sh && sh)
y funciona bien, cambia el shell a zsh.
No está claro cuál es realmente el comando dentro del contenedor. Si hay un punto de entrada como /bin/sh , entonces su comando deberá ser -c "command" . Como no tengo la configuración de composición de la ventana acoplable, aquí hay una configuración de la ventana acoplable que puede ser similar:
docker run -ti --entrypoint /bin/sh --rm alpine -c \ "(which zsh && zsh) || (which bash && bash) || (which sh && sh)"