diff --git a/Dockerfile b/Dockerfile index cf7715f..ba56340 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,15 +7,15 @@ RUN apt-get install -y python-software-properties wget supervisor RUN add-apt-repository -y ppa:nginx/stable RUN apt-get update -RUN apt-get install -y nginx +RUN apt-get install -y nginx RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN mkdir /app WORKDIR /app ADD . /app -RUN wget https://github.com/jwilder/docker-gen/releases/download/0.1.2/docker-gen-linux-amd64-0.1.2.tar.gz -RUN tar xvzf docker-gen-linux-amd64-0.1.2.tar.gz +RUN wget https://github.com/jwilder/docker-gen/releases/download/0.2.1/docker-gen-linux-amd64-0.2.1.tar.gz +RUN tar xvzf docker-gen-linux-amd64-0.2.1.tar.gz RUN mkdir -p /var/log/supervisor ADD supervisor.conf /etc/supervisor/conf.d/supervisor.conf diff --git a/nginx.tmpl b/nginx.tmpl index 469eda2..84606b5 100644 --- a/nginx.tmpl +++ b/nginx.tmpl @@ -2,11 +2,34 @@ upstream {{ $host }} { {{ range $index, $value := $containers }} - {{ with $address := index $value.Addresses 0 }} - server {{ $value.Gateway }}:{{ $address.HostPort }}; - {{ end }} -{{ end }} + {{ $addrLen := len $value.Addresses }} + {{/* If only 1 port exposed, use that */}} + {{ if eq $addrLen 1 }} + {{ with $address := index $value.Addresses 0 }} + # {{$value.Name}} + server {{ $address.IP }}:{{ $address.Port }}; + {{ end }} + + {{/* If more than one port exposed, use the one matching VIRTUAL_PORT env var */}} + {{ else if $value.Env.VIRTUAL_PORT }} + {{ range $i, $address := $value.Addresses }} + {{ if eq $address.Port $value.Env.VIRTUAL_PORT }} + # {{$value.Name}} + server {{ $address.IP }}:{{ $address.Port }}; + {{ end }} + {{ end }} + + {{/* Else default to standard web port 80 */}} + {{ else }} + {{ range $i, $address := $value.Addresses }} + {{ if eq $address.Port "80" }} + # {{$value.Name}} + server {{ $address.IP }}:{{ $address.Port }}; + {{ end }} + {{ end }} + {{ end }} +{{ end }} } server { diff --git a/supervisor.conf b/supervisor.conf index c9966d9..6b293b4 100644 --- a/supervisor.conf +++ b/supervisor.conf @@ -6,6 +6,6 @@ command=nginx directory=/etc/nginx [program:docker-gen] -command=./docker-gen -watch -notify "nginx -s reload" /app/nginx.tmpl /etc/nginx/sites-enabled/default +command=./docker-gen -watch -only-exposed -notify "nginx -s reload" /app/nginx.tmpl /etc/nginx/sites-enabled/default directory=/app