
Tenho recursos limitados no meu servidor e quero hospedar 50 versões diferentes do meu produto. Tenho um produto muito complicado e infelizmente com bugs e gostaria de manter todas as versões acessíveis. Se algum bug for relatado, poderemos investigar e descobrir quando exatamente esse problema ocorreu pela primeira vez.
Mas como cada site possui 5 GB de dados e 1 GB de banco de dados, não é possível manter todos os sites abertos o tempo todo. Nosso servidor apresenta erros de mysql e o servidor não está respondendo porque estouro de memória.
Eu queria saber se existe uma maneira de manter esses 50 sites diferentes desativados por padrão. Se alguém tentar acessar a versão 5-1.ourdomain.com, mostre uma tela de espera e redirecione quando for inicializado.
E se um site não for visitado por mais de 30 minutos feche-o e libere os recursos.
Responder1
Pode haver uma maneira melhor, mas você poderá usar um proxy reverso no host combinado com a ativação do soquete do systemd. Quando uma solicitação chega ao soquete, o systemd pode iniciar o contêiner e encaminhar a solicitação (ele será bloqueado até que o contêiner seja inicializado e receba a solicitação), então faça com que algo observe os arquivos de log e quando nada aparecer no acesso log por, por exemplo, 5 minutos, basta parar o contêiner.
Responder2
Eu tive o mesmo problema (querer iniciar um servidor web sob demanda... não ter 50(!) cópias diferentes rodando no mesmo host). A resposta existente fornece uma solução perfeitamente correta, mas ainda resta algum trabalho braçal para configurá-la, e eu também queria algo que fosse facilmente implantável em um ambiente nativo de contêiner, que não funciona muito bem com o systemd.
Para isso criei o seguinte projeto que estou executando em produção:https://github.com/radian-software/sleeping-beauty
Não é perfeito, mas pode servir ao seu caso de uso ou pode ser adaptável para se adequar.