Erro de TTY no Docker usando Jenkins: the input device is not a TTY

Erro de TTY no Docker usando Jenkins: the input device is not a TTY

Hoje não venho aqui trazer um artigo cheio de conceitos, vim trazer um erro comum do dia a dia em uso da ferramenta de conteinerização chamada Docker que comumente é usada por DevOps.

Como cheguei a esse erro?

Bom, primeiramente eu estava com uma demanda bem particular que precisava do uso de container dentro do Jenkins e este por ter algumas particularidades eu não poderia usar plugins, entretanto dentro dele tinha o docker instalado.

Criei um container e ao colocar para rodar em uma pipeline scriptada joguei o comando com sh para ver o que acontecia e para minha surpresa… o erro apareceu.

O comando “resumido” era:

docker run --name imageBuild -it registry-X/mint-appimage:0.1 ./execDQT.sh

A saída do comando:

the input device is not a TTY

Depois que executei que percebi que o comando não é executado numa TTY pois é a API do Jenkins que executa e não um humano diretamente no terminal.

A Solução:

A solução foi mais simples do que imaginei quando percebi o erro. No build da imagem eu deveria ter criado um entrypoint ao invés de optar por executar diretamente o script em terminal, e assim foi feito.

Passo 1 — Coloquei o script sem .sh e com permissões de execução no path /usr/local/bin

COPY execDQT.sh /root/
RUN chmod +x execDQT.sh
RUN mv execDQT.sh /usr/local/bin/execDQT

Passo 2 — Chamei ele no entrypoint

ENTRYPOINT [ "execDQT" ]

Conclusão

Em resumo foi isso, bem simples e fácil.

Até a próxima! :)

Did you find this article valuable?

Support Nilson Vieira by becoming a sponsor. Any amount is appreciated!