Estou começando a usar o Docker e o richt agora, tentando descobrir como configurar meu primeiro ambiente Apache 2 / PHP dockerizado. Até agora, eu estava usando VMs Linux completas, onde eu usava arquivos de log sendo gravados em / var / log / apache2, depois utilizava "logrotate" para saltar para um novo arquivo todos os dias.
Os arquivos de log foram usados principalmente para detecção imediata de erros (ou seja, faça logon no servidor e use menos para abrir os arquivos access.log e error.log atuais) e para fail2ban.
Se estou certo, isso não é praticável em um ambiente Docker - principalmente porque você geralmente não pode fazer login nos contêineres para ver os logs. Também os logs serão perdidos se o contêiner for removido.
Então: qual é o método mais comum para trabalhar com / emular / substituir access.log / error.log nessa situação? Quais são as soluções comuns para os ambientes de produção e desenvolvimento?
Minhas idéias até agora incluem o uso de um compartilhamento NFS (lento e pode causar colisões de nome de arquivo se não for cuidadoso) e logstash (não tenho certeza se vale a pena o esforço e praticável para sites menores ou mesmo ambientes de desenvolvimento?), Mas tenho certeza de que pessoas inteligentes surgiu com melhores soluções?
Não tenho certeza se isso faz diferença, mas atualmente estou baseando minha imagem do Docker no php: 5.6-apache .
docker attach <container name>
é a boa maneira de ver o stdout do seu contêiner. Mas lembre-se de que, se você pressionar ctrl + d ou ctrl + c, TERMINARÁ (sigkill) sua tarefa em andamento. Então você precisa desanexá-lo adequadamente usando a tecla Escapectrl+p+q
. Se você deseja apenas fazer shell no seu contêiner, prefiro usar oexec
comando acima.