inhumantsar.dockerautoproxy
dockerautoproxy
Was?
Verwendet das jwilder/nginx-proxy Docker-Image, um die Einrichtung eines Reverse Proxys in Docker Swarm zu automatisieren.
Wie?
Verwendung der Rolle
Das Image ist so konzipiert, dass es dynamisch konfiguriert wird. Daher gibt es nicht viel, was im Voraus getan werden muss. Siehe defaults/main.yml
.
Standardmäßig wird das alpine
Image verwendet. Ändern Sie nginx_version
in latest
, um ein debian:jesse
basiertes Image zu verwenden.
Es wird ein Netzwerk namens nginx_proxy_net
erstellt, dem Ihre proxied Container beitreten müssen.
Verwendung des Nginx Proxys
Container, die einen Proxy benötigen, müssen zwei Dinge tun: Den Port, der proxiert werden soll, freigeben und einen virtuellen Host angeben.
Ports können im Dockerfile mit EXPOSE
, in der Kommandozeile mit --expose
oder in der Docker Compose-Datei mit expose
angegeben werden.
Virtuelle Hosts müssen in einer Umgebungsvariable namens VIRTUAL_HOST
angegeben werden.
Erweiterte Nutzung
Benutzerdefinierte Nginx-Konfigurationen
Können geladen werden, indem ein Host-Pfad mit Nginx-Konfigurationsdateien unter Verwendung der Variable dockerautoproxy_config_path
gemountet wird. Der Pfad wird erstellt, wenn er auf dem Host nicht bereits existiert.
SSL-Zertifikate
SSL-Zertifikate können automatisiert generiert oder manuell angegeben werden. Standardmäßig werden sie in einem Datenvolumen gespeichert, das zwischen den Containern geteilt wird. Sie können dockerautoproxy_certs_path
verwenden, um einen Pfad auf dem Host zu mounten, um sie dort zu speichern.
Um Zertifikate automatisch zu generieren, setzen Sie die Ansible-Variable dockerautoproxy_ssl_companion
auf true
. Dies startet einen zweiten Container, der die SSL-Zertifikatserstellung mit Let's Encrypt übernimmt. Um einen Dienst dafür zu aktivieren, setzen Sie die Umgebungsvariablen des Containers LETSENCRYPT_HOST
und LETSENCRYPT_EMAIL
. Zum Beispiel:
$ docker run -d \
--name example-app \
-e "VIRTUAL_HOST=example.com,www.example.com,mail.example.com" \
-e "LETSENCRYPT_HOST=example.com,www.example.com,mail.example.com" \
-e "[email protected]" \
tutum/apache-php