# 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:

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

A saída do comando:

```plaintext
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*

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

Passo 2 — Chamei ele no *entrypoint*

```bash
ENTRYPOINT [ "execDQT" ]
```

# **Conclusão**

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

Até a próxima! :)
