2017-12-29 30 views
0

私はjwilder/nginx-proxyと別途docker-compose.yamlを使用しています。それは次のようになります。Jwilder nginxプロキシ - ドッキング後の503構造体の更新

proxy: 
    image: jwilder/nginx-proxy 
    restart: always 
    volumes: 
    - /var/run/docker.sock:/tmp/docker.sock:ro 
    - ./nginx/conf.d/proxy.conf:/etc/nginx/conf.d/proxy.conf:ro 
    - /Users/marcin/Docker/local_share/certificates:/etc/nginx/certs:ro  
    ports: 
    - "80:80" 
    - "443:443" 
    container_name: proxy 

私はかなり長い時間のためにそれを使用していますし、私のプロジェクトdocker-compose.yamlはこのようになりますとき、それは正常に動作しています:

web: 
    build: /Users/marcin/Docker/definitions/php-nginx/php-7.1-ubuntu 
    volumes: 
    - /Users/marcin/Docker/projects/test.local/html/:/usr/share/nginx/html/ 
    - /Users/marcin/Docker/projects/test.local/nginx/conf.d/:/etc/nginx/conf.d/ 
    - /Users/marcin/Docker/projects/test.local/nginx/log/:/var/log/nginx/ 
    - /Users/marcin/Docker/projects/test.local/supervisor/conf.d/:/etc/supervisor/conf.d/ 
    - /Users/marcin/Docker/projects/test.local/supervisor/log/:/var/log/supervisor/ 
    - /Users/marcin/Docker/projects/test.local/cron/:/root/.cron/ 
    - /Users/marcin/Docker/local_share/:/root/.local_share/ 
    - /Users/marcin/Docker/local_share/certificates/:/usr/share/nginx/certificates/ 
    working_dir: /usr/share/nginx/html/ 
    links: 
    - db 
    container_name: test.php 
    hostname: test.local 
    ports: 
    - "336:22" 
    - "8081:80" 
    - "18080:443"  
    environment: 
    - VIRTUAL_HOST=test.local 
    - CERT_NAME=default 
    - HTTPS_METHOD=noredirect 
db: 
    build: /Users/marcin/Docker/definitions/mysql/5.7 
    environment: 
    - MYSQL_ROOT_PASSWORD=pass 
    - MYSQL_DATABASE= 
    - MYSQL_USER= 
    - MYSQL_PASSWORD= 
    expose: 
    - 3306 
    volumes: 
    - /Users/marcin/Docker/projects/test.local/mysql/data/:/var/lib/mysql/ 
    - /Users/marcin/Docker/projects/test.local/mysql/conf.d/:/etc/mysql/conf.d/source 
    - /Users/marcin/Docker/projects/test.local/mysql/log/:/var/log/mysql/ 
    ports: 
    - "33060:3306" 
    container_name: test.db 
    hostname: test.local 

私はhttp://test.localを使用して問題なくサイトにアクセスすることができますまたはhttps://test.localが必要です。

version: "3.2" 
services: 
    web: 
    build: /Users/marcin/Docker/definitions/php-nginx/php-7.1-ubuntu 
    volumes: 
     - /Users/marcin/Docker/projects/test.local/html/:/usr/share/nginx/html/ 
     - /Users/marcin/Docker/projects/test.local/nginx/conf.d/:/etc/nginx/conf.d/ 
     - /Users/marcin/Docker/projects/test.local/nginx/log/:/var/log/nginx/ 
     - /Users/marcin/Docker/projects/test.local/supervisor/conf.d/:/etc/supervisor/conf.d/ 
     - /Users/marcin/Docker/projects/test.local/supervisor/log/:/var/log/supervisor/ 
     - /Users/marcin/Docker/projects/test.local/cron/:/root/.cron/ 
     - /Users/marcin/Docker/local_share/:/root/.local_share/ 
     - /Users/marcin/Docker/local_share/certificates/:/usr/share/nginx/certificates/ 
    working_dir: /usr/share/nginx/html/ 
    links: 
     - db 
    container_name: test.php 
    hostname: test.local 
    ports: 
     - "336:22" 
     - "8081:80" 
     - "18080:443"  
    environment: 
     - VIRTUAL_HOST=test.local 
     - CERT_NAME=default 
     - HTTPS_METHOD=noredirect 
    db: 
    build: /Users/marcin/Docker/definitions/mysql/5.7 
    environment: 
     - MYSQL_ROOT_PASSWORD=pass 
     - MYSQL_DATABASE= 
     - MYSQL_USER= 
     - MYSQL_PASSWORD= 
    expose: 
     - 3306 
    volumes: 
     - /Users/marcin/Docker/projects/test.local/mysql/data/:/var/lib/mysql/ 
     - /Users/marcin/Docker/projects/test.local/mysql/conf.d/:/etc/mysql/conf.d/source 
     - /Users/marcin/Docker/projects/test.local/mysql/log/:/var/log/mysql/ 
    ports: 
     - "33060:3306" 
    container_name: test.db 
    hostname: test.local 

、動作しないようだということの後:私は新しいバージョンに私のファイル構造を更新する必要がありましたが

。私は問題なくipとportを使ってサイトにアクセスできますが、ドメインにアクセスするためにドメインを使用することはできません。私は取得していますしようとすると:

503サービスを一時的に利用できない

nginxの/ 1.13.8

を、これはjwilder nginxのから確かである(とないnginxのプロジェクトで)。

質問があります - それを動作させるために環境変数をどこに置くべきですか?彼らが今の時に置かれたとき、彼らは代理人によって読まれないようです。

答えて

1

503は、nginxプロキシコンテナがdockerで動作しているコンテナを見ることができ、nginxがトラフィックをルーティングするために必要な設定を持っていることを示しています。 コンテナからコンテナへのネットワークを動作させるには、共通のドッカーネットワークを定義する必要があります。 (これはまた、私は3.2で行ってきた、少なくともv2の構文にアップグレードする必要があり、ネットワークを使用するようにnginxのプロキシコンファイルを更新

docker network create proxy 

あなたは、第1のネットワークを作成するには、以下を実行する必要がありますあなたの他のファイルと一致する):その後、

version: "3.2" 

networks: 
    proxy: 
    external: true 

services: 
    proxy: 
    image: jwilder/nginx-proxy 
    restart: always 
    volumes: 
     - /var/run/docker.sock:/tmp/docker.sock:ro 
     - ./nginx/conf.d/proxy.conf:/etc/nginx/conf.d/proxy.conf:ro 
     - /Users/marcin/Docker/local_share/certificates:/etc/nginx/certs:ro  
    ports: 
     - "80:80" 
     - "443:443" 
    container_name: proxy 
    networks: 
     - proxy 

そして、あなたのアプリケーションのために似たような操作を行います。あなたは、バージョンデフなしv1の構文(からアップグレードされた場合

version: "3.2" 
networks: 
    proxy: 
    external: true 
services: 
    web: 
    build: /Users/marcin/Docker/definitions/php-nginx/php-7.1-ubuntu 
    volumes: 
     - /Users/marcin/Docker/projects/test.local/html/:/usr/share/nginx/html/ 
     - /Users/marcin/Docker/projects/test.local/nginx/conf.d/:/etc/nginx/conf.d/ 
     - /Users/marcin/Docker/projects/test.local/nginx/log/:/var/log/nginx/ 
     - /Users/marcin/Docker/projects/test.local/supervisor/conf.d/:/etc/supervisor/conf.d/ 
     - /Users/marcin/Docker/projects/test.local/supervisor/log/:/var/log/supervisor/ 
     - /Users/marcin/Docker/projects/test.local/cron/:/root/.cron/ 
     - /Users/marcin/Docker/local_share/:/root/.local_share/ 
     - /Users/marcin/Docker/local_share/certificates/:/usr/share/nginx/certificates/ 
    working_dir: /usr/share/nginx/html/ 
    links: 
     - db 
    container_name: test.php 
    hostname: test.local 
    ports: 
     - "336:22" 
     - "8081:80" 
     - "18080:443"  
    environment: 
     - VIRTUAL_HOST=test.local 
     - CERT_NAME=default 
     - HTTPS_METHOD=noredirect 
    networks: 
     - proxy 
     - default 
    db: 
    build: /Users/marcin/Docker/definitions/mysql/5.7 
    environment: 
     - MYSQL_ROOT_PASSWORD=pass 
     - MYSQL_DATABASE= 
     - MYSQL_USER= 
     - MYSQL_PASSWORD= 
    expose: 
     - 3306 
    volumes: 
     - /Users/marcin/Docker/projects/test.local/mysql/data/:/var/lib/mysql/ 
     - /Users/marcin/Docker/projects/test.local/mysql/conf.d/:/etc/mysql/conf.d/source 
     - /Users/marcin/Docker/projects/test.local/mysql/log/:/var/log/mysql/ 
    ports: 
     - "33060:3306" 
    container_name: test.db 
    hostname: test.local 

をdockを使用しないで同じネットワーク上のすべてを実行することから、各composeプロジェクトまたはdnを持つ専用ネットワーク上でスタックを実行することに変わります。他のネットワーク上でアプリを実行するには、明示的に設定する必要があります。上の例では、Webコンテナのみがプロキシネットワーク上に配置され、両方ともこのプロジェクトまたはスタック用に作成されたデフォルトネットワーク上にあります。

+0

ありがとうございます、これは私があなたの答えの少し前に見つけたものですが、あなたの答えはまったく正しいものであり、他人を助けるかもしれません –

関連する問題