簡體   English   中英

Docker-組成Nginx多個容器燒瓶問題

[英]Docker-compose Nginx multiple containers flask issue

我有一個帶有Docker-compose的Nginx反向代理設置的Flask應用程序。 我可以在一個容器中完成所有工作而沒有問題,但我需要在同一台機器上啟動暫存和生產服務器,所以我嘗試將我的設置遷移到具有單獨nginx-proxy容器的多個容器。 反向代理設置似乎沒問題,但是當我使用代理訪問應用程序時,Flask對請求有一些問題。 我在下面詳細介紹了docker-compose文件和服務器輸出。

NGINX-PROXY docker-compose.yml

version: "3.5"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - proxy

networks:
  proxy:

Flask docker-compose.yml

version: '3.5'

services:
  # other services defined, not relevant for the issue

  data-api:
    environment:
      FLASK_ENV: development
      VIRTUAL_HOST: app.local
    build: ./dataAPI
    expose: 
      - 5000
    ports:
      - 5000:5000
    volumes:
     - ./dataAPI:/dataAPI
    networks:
      - nginx_proxy

networks:
  nginx_proxy:
    external: true

我在app.local /etc/hosts添加了一行。 我首先啟動了nginx然后應用程序。 如果我嘗試直接使用0.0.0.0:5000/staging/data訪問它,請求服務沒有問題,但如果我嘗試使用app.local/staging/data代理,Flask應用程序會拋出404:

燒瓶日志

data-api_1  | 172.20.0.1 - - [30/May/2019 14:13:29] "GET /staging/data/ HTTP/1.1" 200 -
data-api_1  | 172.20.0.2 - - [30/May/2019 14:13:31] "GET /staging/data/ HTTP/1.1" 404 -

看起來好像你把容器放在同一個網絡上。 當燒瓶容器使用名為nginx_proxy的網絡時, nginx_proxy使用名為proxy的網絡。

順便說一句,docker-compose對於編寫需要多個容器的應用程序很有用。 如果將兩個服務放在同一個docker-compose文件中,則可以更輕松地使用此設置,而不是為每個容器使用單獨的docker-compose文件。 然后,您甚至不需要設置單獨的網絡,因為compose會為服務創建默認網絡。

另請注意,由於您使用的是nginx反向代理,因此您可能不希望將燒瓶端口映射到主機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM