Ich habe zwei Container erstellt, auf denen zwei verschiedene Webanwendungen ausgeführt werden. Ich versuche, einen dritten Container zu erstellen, in dem ein Nginx-Proxy die Anfrage abhängig vom Hostnamen an den richtigen Container umleitet. Meine Nginx-Konfiguration sieht korrekt aus, wenn ich das offizielle nginx-Image ausführe und manuell die Standardkonfigurationsdatei mit dem Proxy-Setup im Container ändere.Nginx-Proxy, verknüpft mit anderen Docker-Containern
Meine zwei Web-Anwendungen Container laufen bereits, und ich starten Sie den Proxy-Container wie folgt:
docker run -i -t --link webapp1 --link webapp2 -p 80:80 nginx /bin/bash
die sauberste Weg zu tun, wie ich glaube, ich würde eine Dockerfile schaffen, den Behälter zu schaffen, und Übergabe der lokalen default.conf-Datei an den Container beim Erstellen.
Dies ist meine nginx Proxy-Konfigurationsdatei:
server {
listen 80;
server_name www.webapp1.ch;
location/{
proxy_pass http://webapp1/;
}
}
server {
listen 80;
server_name www.webapp2.ch;
location/{
proxy_pass http://webapp2/;
}
}
und die Proxy-Docker-Datei:
# Set the base image to use to Ubuntu
FROM nginx:latest
# Set the file maintainer (your name - the file's author)
MAINTAINER Me
# Update the default application repository sources list
RUN apt-get update && apt-get install -y \
wget \
vim
RUN rm /etc/nginx/conf.d/default.conf
COPY default /etc/nginx/conf.d/default.conf
CMD /etc/init.d/nginx restart
Aber leider, wenn ich es zu bauen bin versucht, wird der Behälter nicht wissen noch die webapp1 und webapp2 containeradresse/ip, da sie noch nicht verlinkt sind. Ich erhalte diesen Fehler:
Step 7 : RUN /etc/init.d/nginx restart
---> Running in aef974e80e74
Restarting nginx: nginx2016/12/29 17:07:17 [emerg] 11#11: host not found in upstream "webapp1" in /etc/nginx/conf.d/default.conf:6
nginx: [emerg] host not found in upstream "webapp1" in /etc/nginx/conf.d/default.conf:6
nginx: configuration file /etc/nginx/nginx.conf test failed
Was mache ich falsch und wäre der beste Ansatz, um es zu beheben?
Vielen Dank Farhad, Ich habe Ihre Antwort überprüft und ich habe es korrigiert, indem Sie ein Netzwerk wie vorgeschlagen erstellen. Es funktioniert jetzt gut – Fab