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
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.

  • 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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.