Sto provando a configurare un contenitore Docker di Ubuntu che esegue un'app Node.js HTTP sulla porta 9000. Per simulare il setup dell'ambiente di produzione, vorrei anche eseguire Apache as un semplice server proxy inverso all'interno del contenitore che inoltra a questa app da, diciamo, la porta 80 (che espongo al grande mondo cattivo).Configurazione minima per il proxy inverso Apache nel contenitore Docker
Sono stato in grado di configurare correttamente il contenitore dell'app Node.js e posso installare e configurare Apache nel mio Dockerfile
; ma sono completamente nuovo nell'impostare un proxy inverso, quindi mentre Apache inizia certamente, non fa il proxy.
mio Dockerfile
sembra qualcosa di simile:
# 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"]
... dove il apache2.conf
sto aggiungendo al /etc/apache2/apache2.conf
è:
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/
Sto facendo funzionare questa immagine usando il seguente comando:
docker run -p 80:80 -p 81:9000 -d IMAGE
Quello che mi aspetto è quello di andare a http://$DOCKER_HOST
(vale a dire, la radice) verrà prelevato da Apache e inoltrato a localhost:9000
(ad esempio, la mia app) nel contenitore. (Se vado a http://$DOCKER_HOST:81
, vado direttamente all'app, solo per dimostrare che è attivo e funzionante. Funziona.) Sospetto che il problema non riguardi Docker, ma la configurazione di Apache.
Stai utilizzando il proxy inverso di apache al solo scopo di esporre il tuo server web sulla porta 80 anziché su 9000 o avrebbe un altro scopo? – Thomasleveil
Esattamente. Sulla macchina di produzione, Apache sta facendo altre cose non correlate; Sto solo mettendo il layer reverse proxy nel mio contenitore in modo che corrisponda al setup in produzione. – Xophmeister
Pls modificare la tua domanda con il comando stai usando per eseguire il contenitore di finestra mobile – Thomasleveil