2016-05-05 12 views
1

バージョン2のdocker-compose.ymlを使用するように私のスタックを移行しようとしましたが、ネットワークホスト名がnginxによって解決されないという問題が発生しました。Dockerネットワークの作成:nginxのホスト名が解決しない

私のスタックには、いくつかの他のソフトウェアコンポーネントを介して安全なコンテンツを提供するnginxリバースプロキシ(debian:wheezy)が含まれています。

バージョン1のyamlでは、ドッカーリンクの環境変数をLUAスクリプトとともに使用して、それらをnginx.conf(nginx-extrasを使用)に挿入しました。これは、ドッカーコンテナの前でリバースプロキシとして完全に機能しました。

バージョン2のyamlでは、私はドッカーネットワークによって生成されたホスト名を使用しています。私は正常にコンテナ内からこれらのホスト名をpingすることができますが、nginxはそれらを解決することができません。私は「のdnsmasqを使用しようとしましたいくつかの読書後

worker_processes 1; 

events { 
    worker_connections 1024; 
} 

http { 
    # permanent redirect to https 
    server { 
    listen   80; 
    rewrite  ^https://$host$request_uri? permanent; 
    } 

    server { 
    listen  443 ssl; 
    ssl on; 
    ssl_certificate  /etc/nginx/ssl/server.crt; 
    ssl_certificate_key /etc/nginx/ssl/server.key; 

    location/{ 
     proxy_pass http://ui:80$request_uri; 
    } 

    location /monitor/ { 
     proxy_pass http://monitor:8888$request_uri; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 

    location /api/ { 
     client_max_body_size 0; 
     proxy_pass http://api:3000$request_uri; 
    } 

    location /files/ { 
     client_max_body_size 0; 
     proxy_pass http://media:80$request_uri; 
    } 

    location /mediapool/ { 
     proxy_pass http://media:80$request_uri; 
     add_header X-Upstream $upstream_addr; 
     if ($request_uri ~ "^.*\/(.*\..*)\?download=true.*$"){ 
      set $fname $1; 
      add_header Content-Disposition 'attachment; filename="$fname"'; 
     } 
     proxy_pass_request_headers  on; 
    } 

    error_page 500 502 503 504 /50x.html; 

    location = /50x.html { 
     root /var/www; 
    } 
    } 
} 

# stay in the foreground so Docker has a process to track 
daemon off; 

nginx.conf

version: '2' 

services: 
    # back-end 
    api: 
    build: . 
    depends_on: 
     - db 
     - redis 
     - worker 
    environment: 
     RAILS_ENV: development 
    ports: 
     - "3000:3000" 
    volumes: 
     - ./:/mmaps 
     - /var/log/mmaps/api:/mmaps/log 
    volumes_from: 
     - apidata 
    command: sh -c 'rm -rf /mmaps/tmp/pids/server.pid; rails server thin -b 0.0.0.0 -p 3000' 

    # background process workers 
    worker: 
    build: . 
    environment: 
     RAILS_ENV: development 
     QUEUE: "*" 
     TERM_CHILD: "1" 
    volumes: 
     - ./:/mmaps 
     - /var/log/mmaps/worker:/mmaps/log 
    volumes_from: 
     - apidata 
    command: rake resque:work 

    # front-end 
    ui: 
    image: magiandev/mmaps-ui:develop 
    depends_on: 
     - api 
    ports: 
     - "8080:80" 
    volumes: 
     - /var/log/mmaps/ui:/var/log/nginx 

    # database 
    db: 
    image: mysql:5.7 
    environment: 
     MYSQL_ROOT_PASSWORD: pewpewpew 
    volumes_from: 
     - mysqldata 
    volumes: 
     - /var/log/mmaps/db:/var/log/mysql 

    # key store 
    redis: 
    image: redis:2.8.13 
    user: root 
    command: ["redis-server", "--appendonly yes"] 
    volumes_from: 
     - redisdata 
    volumes: 
     - /var/log/mmaps/redis:/var/log/redis 

    # websocket server 
    monitor: 
    image: magiandev/mmaps-monitor:develop 
    depends_on: 
     - api 
    environment: 
     NODE_ENV: development 
    ports: 
     - "8888:8888" 

    # media server 
    media: 
    image: nginx:1.7.1 
    volumes_from: 
     - apidata 
    ports: 
     - "3080:80" 
    volumes: 
     - ./docker/media/nginx.conf:/etc/nginx/nginx.conf:ro 
     - /srv/mmaps/public:/usr/local/nginx/html:ro 
     - /var/log/mmaps/mediapool:/usr/local/nginx/logs 

    # reverse proxy 
    proxy: 
    build: docker/proxy 
    ports: 
     - "80:80" 
     - "443:443" 
    volumes: 
     - /var/log/mmaps/proxy:/var/log/nginx 


    apidata: 
    image: busybox:ubuntu-14.04 
    volumes: 
     - /srv/mmaps/public:/mmaps/public 
    command: echo api data 

    mysqldata: 
    image: busybox:ubuntu-14.04 
    volumes: 
     - /srv/mmaps/db:/var/lib/mysql 
    command: echo mysql data 

    redisdata: 
    image: busybox:ubuntu-14.04 
    volumes: 
     - /srv/mmaps/redis:/data 
    command: echo redis data 

    # master data 
    # convenience container for backups 
    data: 
    image: busybox:ubuntu-14.04 
    volumes_from: 
     - apidata 
     - mysqldata 
     - redisdata 
    command: echo mmaps data 

ドッキングウィンドウ-compose.yml:ここ

2016/05/04 01:23:44 [error] 5#0: *3 no resolver defined to resolve ui, client: 10.0.2.2, server: , request: "GET/HTTP/1.1", host: "localhost" 

は私の現在の設定です'と設定してresolver 127.0.0.1をnginx.conf内に設定しますが、これを動作させることはできません:

2016/05/04 01:54:26 [error] 6#0: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53 

V2で動作するコンテナにプロキシを渡すようにnginxを設定するより良い方法はありますか?

答えて

0

コンテナの名前を変更し、名前で解決することができます。

+0

私はこの問題に以来戻っていません。私のnginx confは既にコンテナのホスト名を使用しています。あなたは詳細を教えていただけますか? – Nathan

+0

/etc/hostsを使用して解決することができます 名前ip_address –

+0

@MeiramChuzhenbayev IPは動的に割り当てられ、時間とともに変化します。どのようにそれらを/ etc/hostsに書きますか? –

関連する問題