2017-06-21 6 views
-1

2日間の作業と私はまだ固執しています。私は別のnginxとアプリケーションのコンテナを実行しています。アプリケーション容器にはポート8000​​でガンコーンプロセスを実行するフラスコアプリがあります。nginxとフラスコのドッカーコンテナでエラーが発生しました

毎回localhost:8080に移動します.nginxポート80はlocalhostにマップされています。読み込み画面とnginx 504エラーが発生します。

これは私がターミナルに表示されるものです。enter image description here

server { 

    listen 80; 
    server_name localhost; 
    charset utf-8; 

    location /static/ { 
     alias /data/web/crm/web_interface; 
    } 

    location = /favicon.ico { 
     alias /data/web/crm/web_interface/static/favicon.ico; 
    } 

    location/{ 
     proxy_pass http://web:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

nginxのDockerfile

nginx.conf

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

version: '2' 

services: 
    web: 
    restart: always 
    build: ./web_app 
    expose: 
     - "8000" 
    ports: 
     - "8000:8000" 
    volumes: 
     - ./web_app:/data/web 
    command: /usr/local/bin/gunicorn web_interface:app -w 4 -t 90 --log-level=info -b :8000 --reload 
    depends_on: 
     - postgres 

    nginx: 
    restart: always 
    build: ./nginx 
    ports: 
    - "8080:80" 
    volumes_from: 
     - web 
    depends_on: 
     - web 

    postgres: 
    restart: always 
    image: postgres:latest 
    volumes_from: 
     - data 
    volumes: 
     - ./postgres/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d 
     - ./backups/postgresql:/backup 
    expose: 
     - "5432" 

    data: 
    restart: always 
    image: alpine 
    volumes: 
     - /var/lib/postgresql 
    tty: true 

FROM nginx:latest RUN rm /etc/nginx/conf.d/default.conf COPY ./nginx.conf /etc/nginx/conf.d/nginx.conf 

私が苦労しているこの問題についての助けを必要とする場合、私はより多くの情報を提供します。

+0

'localhost:8000'で直接gunicornサーバーにアクセスできますか? –

+0

いいえ、私は成功せずに試しました。 –

+0

私は公開されたポートとマッピングでそれにアクセスすることはできますが、それでも私は傾けることができます。 –

答えて

0

オクラホマので、頭をたたきの3日後、私は再地面から始まった。アプリのコンテナを再構築し、ガンコンを動かした。

そこから、データベースホスト名が間違っていたために、gunicornプロセスがタイムアウトしたと判断できました。私のアプリケーションを通してエラーが返されるのではなく、エラーは無音になりました。

私はpostgresコンテナとウェブコンテナをリンクすることでこれを修正しました。私のコードでは、postgresホスト名として "postgres"(コンテナの名前)を使用することができました。

外部ホストのアドレスを確認してください。

0

NGINXレスポンス504は、NGINXがバックエンドサーバに接続できないため、ゲートウェイタイムアウトを示します。だから、proxy_passディレクトリに問題を見つけることができます。

  1. 代わりにIP

    場所/ {

    proxy_pass http://<real_ip>:8000; 
    

    }

  2. 利用の:私はnginxのはwebドメイン名を解決できないと思います

    は、2つの解決策があります上流

    上流ウェブ{

    server <real_ip>; 
    

    }

    位置/ {

    proxy_pass http://web:8000; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    

    }

関連する問題