Próbuję skonfigurować kontener Docker w Ubuntu, który uruchamia aplikację HTTP Node.js na porcie 9000. Aby naśladować konfigurację środowiska produkcyjnego, chciałbym również uruchomić Apache jako prosty odwrotny serwer proxy w kontenerze, który przekazuje tę aplikację z, powiedzmy, portu 80 (który ujawniam dużemu złemu światu).Minimalna konfiguracja dla odwrotnego proxy Apache w kontenerze Docker
Byłem w stanie skonfigurować kontener aplikacji Node.js w porządku i mogę zainstalować i skonfigurować Apache w moim Dockerfile
; ale jestem całkowicie nowy w tworzeniu odwrotnego proxy, więc podczas gdy Apache na pewno zaczyna, nie ma proxy.
Moja Dockerfile
wygląda mniej więcej tak:
# DOCKER-VERSION 1.3.0
FROM ubuntu:12.04
# Install and set up Apache as a reverse proxy
RUN apt-get -y install apache2 libapache2-mod-proxy-html
COPY apache2.conf /etc/apache2/app.conf
RUN cat /etc/apache2/app.conf >> /etc/apache2/apache2.conf
RUN service apache2 start
# Install and set up Node.js and bundle app
# ...This works...
EXPOSE 80
CMD ["./start-app.sh"]
... gdzie apache2.conf
jestem dołączanie do /etc/apache2/apache2.conf
jest:
ServerName localhost
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /http://localhost:9000/
ProxyPassReverse/http://localhost:9000/
Używam tego obrazu za pomocą następującego polecenia:
docker run -p 80:80 -p 81:9000 -d IMAGE
Spodziewam się, że będzie http://$DOCKER_HOST
(tj. Root) zostanie pobrane przez Apache i przesłane do localhost:9000
(tj. Mojej aplikacji) w kontenerze. (Jeśli przejdę na stronę http://$DOCKER_HOST:81
, przejdę od razu do aplikacji, aby udowodnić, że działa i działa.) Podejrzewam, że problem nie dotyczy w ogóle Dockera, ale konfiguracji Apache.
Czy korzystasz z odwrotnego proxy Apache wyłącznie w celu udostępnienia serwera WWW na porcie 80 zamiast 9000, czy też miałby on inny cel? – Thomasleveil
Dokładnie. Na maszynie produkcyjnej Apache robi inne, niezwiązane ze sobą rzeczy; Właśnie umieszczam warstwę odwrotnego proxy w moim kontenerze, tak aby pasowała do konfiguracji w produkcji. – Xophmeister
Pls edytować pytanie za pomocą polecenia używasz do uruchomienia kontenera dokowania – Thomasleveil