2

I have a docker-compose that creates a container with a http server that doesn't get picked up by jwilder's nginx reverse proxy but it works wen instantiated by hand.

version: '2'
services:
    mongo:
        image: tutum/mongodb
        expose:
            - "27017"
        environment:
            - AUTH=no

    backend:
        build:
            context: "./instance"
        hostname: instance
        ports:
            - "1080:8080"
        expose:
            - "8080"
        links:
            - mongo

    frontend:
        build:
            context: "./instancegui"
        ports:
            - "80"
        environment:
            - VIRTUAL_HOST=some.host.com
            - LETSENCRYPT_HOST=some.host.com
            - LETSENCRYPT_EMAIL=someone@somewhere.com

the config file generated by the reverse proxy says upstream{...DOWN}
but the container runs fine when instantiated like so

docker run --name group_frontend_1 -p 80 -e "VIRTUAL_HOST=some.host.com" -e "LETSENCRYPT_HOST=some.host.com" -e "LETSENCRYPT_EMAIL=someone@somewhere.com" -d db70e6003db9

2 Answers2

1

Ok found the solution

the problem is that the contained is not in a network watched by the proxy container, the most direct way is to set the contained in bridge mode

network_mode: "bridge"

and ports 80 is overkill its only needed expose

expose:
        - "80"

sources:
https://github.com/jwilder/nginx-proxy/issues/552
https://github.com/docker/compose/issues/3012

0

Why not use a plain and simple nginx image like this. Docker already does DNS for you.

Driver
  • 101
  • the DockerFile inside ./instancegui is similar to yours, its the official nginx image with my project files. – Eduardo Oliveira Oct 11 '16 at 16:14
  • Could you elaborate on the "Docker already does DNS for you." – Eduardo Oliveira Oct 11 '16 at 16:15
  • You have a container named "frontend". If you `ping frontend` inside the container, it will resolve to the container's IP. What jwilder/nginx-proxy does is execute a Go program that calls the Docker API and build a `/etc/hosts` file. Thats why i say, Docker already does DNS resolution for you. – Driver Oct 11 '16 at 16:19