通过Nginx + Gunicorn(泊坞窗撰写)服务多个Flask应用

时间:2020-06-26 16:29:00

标签: python-3.x nginx flask docker-compose nginx-reverse-proxy

G'day 我试图向我的Nginx添加另一个服务“邮件程序”,该服务启动时没有任何错误,但是当我尝试调用我的“邮件程序”服务(http:// nginx_ip / mails / healthcheck)时,我收到了“ 404”第一个作品http:// nginx_ip / v1 / notes / login等...。我确认我的 nginx.conf 文件有一些错误。你有什么主意吗?

这是我的nginx.conf

upstream hello_flask {
    server app:5000;
}

upstream hello_flask2 {
    server mailer:5080;
}

server {

    listen 80;

    location /v1/notes {
        proxy_pass http://hello_flask;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

      location /mails {
        proxy_pass http://hello_flask2;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }


}

routes.py

from flask import current_app as app


@app.route('/mails/healthcheck', methods=['GET'])
def healthcheck():
    return "OK", 200

docker-compose

version: '3.5'

services:
  nginx:
    build: ./services/nginx
    networks:
      testing_net:
        ipv4_address: ${INGRESS}
    ports:
      - 1337:80
    depends_on:
      - app
      - mailer
  app:
    build: ./services/web
    depends_on:
      - db
    env_file:
      - .env
    networks:
        testing_net:
            ipv4_address: ${FLASK_HOST}
    ports:
      - ${FLASK_PORT}:${FLASK_PORT}
    restart: always

  scheduler:
    build: services/scheduler/.
    depends_on:
      - app
    env_file:
      - .env
    networks:
      testing_net:
        ipv4_address: ${FLASK_SCHEDULER_HOST}
    ports:
      - ${FLASK_SCHEDULER_PORT}:${FLASK_SCHEDULER_PORT}
    restart: always

  mailer:
    build: services/mailer/.
    depends_on:
      - app
    env_file:
      - .env
    networks:
      testing_net:
        ipv4_address: ${FLASK_MAILER_HOST}
    ports:
      - ${FLASK_MAILER_PORT}:${FLASK_MAILER_PORT}
    restart: always

  db:
    image: postgres:12
    volumes:
      - ./docker/sql/:/docker-entrypoint-initdb.d/
      - postgres_data:/var/lib/postgresql/data/
    environment:
       POSTGRES_USER: postgres
       POSTGRES_PASSWORD: postgres
       POSTGRES_DB: postgres
    env_file:
      - .env
    networks:
        testing_net:
            ipv4_address: ${POSTGRES_HOST}
    restart: always

  pgadmin-compose:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "test@gmail.com"
      PGADMIN_DEFAULT_PASSWORD: "test1234"
    ports:
      - "6000:80"
    env_file:
      - .env
    networks:
        testing_net:
            ipv4_address: ${PGADMIN4_HOST}
    depends_on:
      - db

volumes:
  postgres_data:

networks:
    testing_net:
        ipam:
            driver: default
            config:
                - subnet: 172.28.0.0/16

0 个答案:

没有答案