Search code examples
nginxdockerproxypass

Restarting Containers When Using Docker and Nginx proxy_pass


I have an nginx docker container and a webapp container successfully running and talking to eachother.

The nginx container listens on port 80, and uses proxy_pass to direct traffic to the IP of the webapp container.

upstream app_humansio { server humansio:8080 max_fails=3 fail_timeout=30s; }

"humansio" is set in the /etc/hosts file by docker because I've started nginx with --link humansio:humansio. The webapp container (humansio) is always exposing 8080.

The problem is, when I reload the webapp container, the link to the nginx container breaks and I need to restart that as well. Is there any way I can do this differently so I don't need to restart the nginx container when the webapp container reloads?

--

I've tried to do something like connecting them manually by using a common port (8001 on both), but since they actually reserve that port, the 2nd container cannot use it as well.

Thanks!


Solution

  • I prefer to run the proxy (nginx of haproxy) directly on the host for this reason.

    But an option is to "Link via an Ambassador Container" https://docs.docker.com/articles/ambassador_pattern_linking/

    https://www.digitalocean.com/community/tutorials/how-to-use-the-ambassador-pattern-to-dynamically-configure-services-on-coreos