web-dev-qa-db-ja.com

Dockercomposeがリバースプロキシによって取得されない

Jwilderのnginxリバースプロキシによって取得されないhttpサーバーでコンテナーを作成するdocker-composeがありますが、手動でインスタンス化すると機能します。

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
            - [email protected]

リバースプロキシによって生成された設定ファイルには、upstream {... DOWN}と記載されています。
しかし、そのようにインスタンス化すると、コンテナは正常に動作します

docker run --name group_frontend_1 -p 80 -e "VIRTUAL_Host=some.Host.com" -e "LETSENCRYPT_Host=some.Host.com" -e "[email protected]" -d db70e6003db9
2

解決策が見つかりました

問題は、含まれているものがプロキシコンテナによって監視されているネットワークにないことです。最も直接的な方法は、含まれているものをブリッジモードに設定することです。

network_mode: "bridge"

そしてポート80はその唯一の必要な露出をやり過ぎです

expose:
        - "80"

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

1

this のようなプレーンでシンプルなnginxイメージを使用してみませんか。 DockerはすでにDNSを実行しています。

0
Driver