Tenho um script de shell no meu host, que está chamando outro script para rodar dentro do contêiner. Aqui está um caso simples que funciona bem:
host_script.sh
#!/bin/sh
results=$(docker exec mycontainer "./scripts/container_script.sh")
echo $results
container_script.sh
#!/bin/sh
echo "Hello World"
No entanto, agora eu gostaria de executar o script do container com um argumento de entrada. Assim:
host_script.sh
#!/bin/sh
path="/some/other/path"
results=$(docker exec mycontainer "./scripts/container_script.sh $path")
echo $results
container_script.sh
#!/bin/sh
echo "Hello World"
echo $1
Desta vez recebo o erro:
OCI runtime exec falhou: exec falhou: não foi possível iniciar o processo do contêiner: exec: "./scripts/container_script.sh /some/other/path": stat ./scripts/container_script.sh /some/other/path: arquivo ou diretório inexistente: desconhecido
Como posso passar um argumento para este script dentro do contêiner?
Sempre que você vir um erro reclamando sobre um arquivo não existente, e o arquivo correspondendo à linha de comando completa que você forneceu, significa que o que tentou executar o comando não o dividiu. Então você precisa fazer isso sozinho:
Veja também a
docker exec
documentação que afirma explicitamente que