Eu gerencio servidores nos quais os usuários têm seus próprios sites que podem ser acessados por FTP (como uma empresa de hospedagem) e, em vez de trabalhar no isolamento de processos de pilha LAMP, fiquei pensando se seria possível implementar o Docker e usar imagens por site.
Pelo que entendi, você pode expor a instância do Docker por meio de suas portas; portanto, se você executar duas instâncias do Docker no mesmo servidor, precisará expor duas portas diferentes.
Mas é possível exportar não portas, mas o nome do servidor, como:
- www.somewebsite.com: instância 1 do Docker
- www.otherwebsite.com: instância 2 do Docker
- www.etc.com: instância do Docker ...
E isso, no mesmo servidor.
Pensei em instalar apenas o Apache no servidor, que redirecionaria a solicitação para a instância dedicada do Docker com base no nome do servidor, mas teria que instalar o Apache (novamente!) E o MySQL em qualquer instância do Docker.
Isso é possível e, além disso, isso é interessante em termos de desempenho (ou não existe)?
Obrigado pela ajuda.
Respostas:
Sim, é possível. O que você precisa fazer é fornecer várias 80 portas. um para cada URL. Você pode fazer isso usando, por exemplo, Host virtual do Apache em execução no servidor host do Docker.
O arquivo de configuração do Apache ficará assim:
fonte
ProxyPreserveHost On
, para que você não tenha muitos links para local.hostname.ofDockerHost: 12345 no seu site. Aqui estão mais informações que foram úteis para mim: digitalocean.com/community/tutorials/…É possível. Você pode usar o apache (ou, melhor ainda, haproxy, nginx ou verniz, que pode ser mais eficiente que o apache apenas para essa tarefa de redirecionamento) no servidor principal, para redirecionar para as portas apache de cada contêiner.
Mas, dependendo dos sites que você executa lá (e de suas configurações do apache), isso pode exigir muito mais memória do que usar um único apache central com virtualhosts, especialmente se você tiver módulos (por exemplo, php) que exigem muita memória RAM.
fonte
Sei que isso já foi respondido, mas queria dar um passo adiante e mostrar um exemplo de como isso pode ser feito, para fornecer uma resposta mais completa.
Por favor, veja minha imagem do docker aqui com instruções sobre como usá-lo. Isso mostrará como configurar dois sites https://hub.docker.com/r/vect0r/httpd-proxy/
Como o jihun disse, você terá que garantir que a sua configuração de vhost esteja definida. Meu exemplo usa a porta 80 para exibir um site de teste example.com e 81 para exibir o site de teste example2.com. Também é importante observar que você precisará especificar seu conteúdo e expor as portas necessárias no seu Dockerfile, como tal;
Espero que isso ajude a explicar um pouco mais o processo. Por favor, não hesite em perguntar-me mais sobre isso, prazer em ajudar.
Saudações,
V
fonte
No meu caso, eu precisava adicionar SSLProxyEngine On , ProxyPreserveHost On e RequestHeader, definir Front-End-Https "On" no meu arquivo apache 2.4 vhost, porque queria ativar o SSL no contêiner do docker. Sobre o local.hostname.ofDockerHost , no meu caso, o nome do servidor host executando o contêiner do docker era lucas e a porta mapeada para a porta 443 do contêiner do docker era 1443 (porque a porta 443 já estava em uso pelo apache no host server), para que a linha acabasse assim https: // lucas: 1443 /
Esta é a configuração final e está funcionando muito bem!
Finalmente, no contêiner do docker, tive que configurar os cabeçalhos SSL do proxy. No meu caso, o contêiner estava executando o nginx e algo chamado omnibus para configurar aplicativos ruby. Eu acho que isso pode ser configurado em um arquivo de configuração nginx também. Anotá-lo-á como é o caso de alguém achar isso útil
Guia completo para apache, ISP Config, servidor Ubuntu 16.04 aqui https://www.howtoforge.com/community/threads/subdomain-or-subfolder-route-requests-to-running-docker-image.73845/#post-347744
fonte