Bem, por que você não usa o ELK stack com o logsprout, você pode obter registros em tempo real de todos os contêineres do docker, além de poder pesquisar entre os logs e muitos outros itens legais
Estou tentando obter o stdout em tempo real de um comando que estou executando em um contêiner docker. No entanto, eu preciso fazer isso de um comando remoto executado a partir de outro host.
Quando estou no host do docker, posso executar meu comando do docker com -it
e obter a saída em tempo real de que preciso. No entanto, tenho essa restrição onde tenho para executar o comando remotamente, tornando a solução anterior inútil. Eu não posso usar -t
porque ele executa um pseudo terminal baseado em $ TERM que não existe com o comando remoto porque não há nenhum terminal.
Eu também tentei executar o comando docker com -d
para executá-lo em segundo plano e docker logs -f <container>
, mas a saída ainda é dada de uma só vez no final do processo.
Qualquer solução ou conselho é apreciado e corrija-me se isso pertence a outra pilha.
Bem, por que você não usa o ELK stack com o logsprout, você pode obter registros em tempo real de todos os contêineres do docker, além de poder pesquisar entre os logs e muitos outros itens legais
Descobri isso de alguma ajuda no github do Docker. Não mencionei que estava tentando executar um script python no contêiner, mas não achei que fosse importante.
Este não era realmente um problema do docker, mas um problema de python. Eu aprendi que o Docker já fornece stdout em tempo real . O Python estava segurando todo o stdout em seu buffer e não liberando até a conclusão do script. Exceto quando o código foi executado em um terminal com -t
.
No comando docker, tudo o que eu precisava era chamar o script com python -u <script>
para evitar que o python armazenasse o stdout em buffer.