Zarządzam serwerami, na których użytkownicy mają własne strony internetowe, do których można uzyskać dostęp przez FTP (jak firma hostingowa) i zamiast pracować nad izolacją procesów stosu LAMP, zastanawiałem się, czy można wdrożyć Docker i użyć obrazów na stronę.
Z tego, co rozumiem, możesz ujawnić wystąpienie Dockera za pośrednictwem ich portów, więc jeśli uruchomisz dwa wystąpienie dokera na tym samym serwerze, będziesz musiał udostępnić dwa różne porty.
Ale czy można eksportować nie porty, ale nazwę serwera, na przykład:
- www.somewebsite.com: Instancja Docker 1
- www.otherwebsite.com: Instancja Docker 2
- www.etc.com: Instancja Docker ...
I to na tym samym serwerze.
Myślałem o zainstalowaniu tylko Apache na serwerze, który przekierowałby żądanie do dedykowanej instancji Docker na podstawie nazwy serwera, ale wtedy musiałbym zainstalować Apache (ponownie!) I MySQL na dowolnych instancjach Docker.
Czy jest to możliwe, a ponadto, czy jest to interesujące pod względem wydajności (lub wcale)?
Dziękuję za pomoc
Odpowiedzi:
Tak to mozliwe. Co musisz zrobić, to zapewnić kilka 80 portów. jeden dla każdego adresu URL. Możesz to zrobić za pomocą np. Wirtualnego hosta Apache działającego na serwerze hosta Docker.
Plik konfiguracyjny Apache będzie wyglądał następująco:
źródło
ProxyPreserveHost On
więc nie kończy się wiele linków do local.hostname.ofDockerHost: 12345 w witrynie. Oto więcej informacji, które były dla mnie pomocne: digitalocean.com/community/tutorials/…To jest możliwe. Możesz użyć apache (lub jeszcze lepiej, haproxy, nginx lub lakier, który może być bardziej wydajny niż apache tylko do tego zadania przekierowania) na głównym serwerze, aby przekierować do portów apache każdego kontenera.
Jednak w zależności od witryn, które tam uruchamiasz (i ich konfiguracji apache), może to wymagać znacznie więcej pamięci niż używanie jednego centralnego apache z wirtualnymi hostami, szczególnie jeśli masz moduły (np. Php), które wymagają dużej ilości pamięci RAM.
źródło
Wiem, że już na nie odpowiedziano, ale chciałem pójść o krok dalej i pokazać wam przykład, jak można to zrobić, aby uzyskać bardziej kompletną odpowiedź.
Proszę zobaczyć mój obraz dokera tutaj z instrukcjami, jak go używać, pokaże to, jak skonfigurować dwie witryny https://hub.docker.com/r/vect0r/httpd-proxy/
Jak powiedział dżihun, będziesz musiał upewnić się, że masz skonfigurowaną konfigurację vhosta. Mój przykład używa portu 80 do wyświetlenia strony testowej example.com i 81 do wyświetlenia strony testowej example2.com. Ważne jest również, aby pamiętać, że będziesz musiał określić swoją zawartość i ujawnić wymagane porty w pliku Docker, takie jak;
Mam nadzieję, że to pomoże trochę wyjaśnić ten proces. Prosimy o dalsze pytania w tej sprawie, chętnie pomożemy.
Pozdrowienia,
V.
źródło
W moim przypadku musiałem dodać SSLProxyEngine On , ProxyPreserveHost On i RequestHeader ustawić Front-End-Https „On” do mojego pliku vache apache 2.4, ponieważ chciałem włączyć SSL w kontenerze dokera. O local.hostname.DDockerHost , w moim przypadku nazwa serwera hosta, na którym działa kontener Dockera, to Lucas , a port mapowany na port 443 kontenera Dockera to 1443 (ponieważ port 443 był już używany przez apache na hoście serwer), dzięki czemu linia skończyła w ten sposób https: // lucas: 1443 /
To jest końcowa konfiguracja i działa dobrze!
Wreszcie w kontenerze dokera musiałem skonfigurować nagłówki SSL proxy. W moim przypadku w kontenerze działał nginx i coś o nazwie omnibus do konfigurowania aplikacji ruby. Myślę, że można to również ustawić w pliku konfiguracyjnym nginx. Spiszę to na wypadek, gdyby ktoś uznał to za pomocne
Kompletny przewodnik dla Apache, ISP Config, serwer Ubuntu 16.04 tutaj https://www.howtoforge.com/community/threads/subdomain-or-subfolder-route-requests-to-running-docker-image.73845/#post-347744
źródło