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! :)
Subscribe to my newsletter
Read articles from Nilson Vieira directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Nilson Vieira
Nilson Vieira
Hi there 👋 I'm a DevOps Enginner working in São Luis - MA, Brazil. I have a degree in Information Systems from UNDB - Unidade de Ensino Superior Dom Bosco, a postgraduate degree in Information Security and a passionate by Technology. I had my first contact with a computer when I was 11 years old, in a community course in my neighborhood. At the age of 12, I was intentionally teaching at the same association, which brought me much pleasure and more knowledge. My first CLT job was at the age of 17 and also teaching at several computer schools in the capital of Maranhão. Linux is my Favorite OS, my favorite distribution is Pop!OS, but I work daily with MacOs and Windows OS. ;) 🏢 I'm currently working at Grupo Mateus ⚙️ I use daily: .sh, .js, .cpp, .go, .py, .jar, .tf, .yaml, .json 🌍 I'm mostly active within the DevOps Culture in My Organization 🌱 Reading all about Open Source, DevOps, Clean Architecture, Cloud Computing and more... ⚡️ Fun fact: I'm a huge fan of Harry Potter and Lord Of Kings and Geek Culture. ✨ My Website is nilsonvieira.com.br;