Как запустить 2 flask приложений и Nginx, используя одну docker -композицию - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу запустить 2 flask контейнеров и 1 Nginx контейнер, используя один docker файл компоновки, но продолжаю получать 404 ошибки.

Пробовал после нескольких уроков, но все равно не повезло.

Ниже приведен мой docker файл для создания вместе с Nginx .conf и Uwsgi config.

docker -compose:

version: "3.7"

services:
    flask:
        build: ./flask
        container_name: flask
        restart: always
        image: flask
        environment: 
            - APP_NAME=flask
        expose: 
            - 8080
        ports:
            - "8080:8080"

    flask2:
        build: ./flask2
        container_name: flask2
        restart: always
        image: flask2
        environment: 
            - APP_NAME=flask2
        expose: 
            - 8081
        ports: 
            - "8081:8081"

    nginx: 
        build: ./nginx
        image: nginx
        container_name: nginx
        restart: always
        ports:
            - "80:80"
            - "81:81"
        depends_on: 
            - flask
            - flask2

nginx. conf

upstream flask_app1 {
    server flask:8080;
}

upstream flask_app2 {
    server flask2:8081;
}

server {
    listen 80;

    location /test1 {
        uwsgi_pass flask_app1;
    }

    location /test2 {
        uwsgi_pass flask_app2;
    }
}

uwsgi: оба идентичные, кроме порта.

[uwsgi]
wsgi-file = run.py
callable = app
socket = :8081
processes = 4
threads = 2
master = true
chmod-socket = 660
buffer-size = 32768
vacuum = true
die-on-term = true

Я использую docker для windows, и в GUI я вижу, что 2 * Приложения 1031 * имеют порты, привязанные к 8080 и 8081, и nginx, привязанные к порту 80.

Не уверен, в чем еще проблема. Любая помощь будет фантастической c.

Заранее спасибо.

1 Ответ

0 голосов
/ 09 апреля 2020

Хотя я не смог получить то, что в идеале хотел, перенаправив каждое приложение в другое место, мне удалось решить эту проблему, установив порты для nginx в файле docker compose для нужных мне портов. использовать для каждого приложения и затем использовать отдельные серверные блоки для маршрутизации портов на порты, по которым каждое приложение взаимодействует.

docker -составить:

version: "3.7"

services:
    flask:
        build: ./flask
        container_name: flask
        restart: always
        image: flask
        environment: 
            - APP_NAME=flask

    flask2:
        build: ./flask2
        container_name: flask2
        restart: always
        image: flask2
        environment: 
            - APP_NAME=flask2

    nginx: 
        build: ./nginx
        image: nginx
        container_name: nginx
        restart: always
        ports:
            - "8001:8001"
            - "8002:8002"
        depends_on: 
            - flask
            - flask2

nginx .conf:

server {
    listen 8001;
    location / {
        uwsgi_pass flask:8001;
    }
}

server {
    listen 8002;
    location / {
        uwsgi_pass flask:8002;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...