Minimal-Konfiguration für Apache-reverse-proxy in Docker container

Ich versuche zu setup ein Ubuntu Docker-container läuft ein Node.js HTTP app auf port 9000. Zu imitieren, um den Aufbau der Produktionsumgebung, ich würde auch gerne den Apache als eine einfache reverse-proxy-server innerhalb des Containers, die nach vorne, um diese app von, sagen wir, port 80 (was ich aussetzen, um der großen bösen Welt).

Habe ich schon einrichten können Node.js app-container in Ordnung und ich kann die Installation und Konfiguration von Apache in meinem Dockerfile; aber ich bin komplett neu einrichten eines reverse-proxy, so dass während der Apache sicherlich beginnt, ist es nicht proxy.

Meine Dockerfile etwa so aussieht:

# 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"]

...wo die apache2.conf ich bin Anhängen /etc/apache2/apache2.conf ist:

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/

Mir läuft dieses image mit dem folgenden Befehl:

docker run -p 80:80 -p 81:9000 -d IMAGE

Was ich erwarte ist, dass Sie gehen, um http://$DOCKER_HOST (also die Wurzel) wird abgeholt von Apache und an localhost:9000 (d.h., meine app) in den container. (Wenn ich mich http://$DOCKER_HOST:81, gehe ich direkt zu der app; einfach nur, um zu beweisen, dass es läuft. Dieser funktioniert.) Ich vermute, dass das problem nicht bei allen zu tun, mit Docker, aber die Apache-Konfiguration.

  • Verwenden Sie die apache-reverse-proxy für den alleinigen Zweck der Offenlegung Ihrer web-server auf port 80 statt 9000 oder hätte es einen anderen Zweck?
  • Genau. Auf der Produktions-Maschine, Apache ist dabei andere, Unbeteiligte Zeug, ich bin gerade dabei, das reverse-proxy-Schicht in meinem container, so passt die Einrichtung in der Produktion.
  • Pls Bearbeiten Sie Ihre Frage mit dem Befehl verwenden Sie, um ausführen Ihre docker-container
  • Bearbeitet
InformationsquelleAutor Xophmeister | 2014-10-20
Schreibe einen Kommentar