【问题标题】:How to run 2 flask apps and Nginx using a single docker-compose如何使用单个 docker-compose 运行 2 个烧瓶应用程序和 Nginx
【发布时间】:2020-04-08 06:53:46
【问题描述】:

我希望使用一个 docker compose 文件运行 2 个烧瓶容器和 1 个 Nginx 容器,但不断收到 404 错误。

尝试了许多教程,但仍然没有成功。

下面是我的 docker compose 文件以及 Nginx.conf 和 Uwsgi 配置。

码头工人撰写:

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

我在 windows 上使用 docker,我可以在 GUI 中看到 2 个烧瓶应用程序的端口绑定在 8080 和 8081,而 nginx 绑定到端口 80。

不确定还有什么问题。任何帮助都会很棒。

提前致谢。

【问题讨论】:

  • 你问的是什么网址? localhost/task1localhost/task2?当您询问localhost:8080localhost:8081 时,它有效吗?
  • @d0niek 正在寻找 url locoalhost/test1localhost/test2。我可以尝试用 localhost:8080 之类的花盆做广告,但我一无所获。
  • 如果 url localhost:8080 不起作用,那么 url localhost/task1 也不起作用
  • 请编辑您的问题以添加 docker-compose 日志。

标签: docker nginx flask


【解决方案1】:

虽然我无法通过将每个应用程序路由到不同的位置来获得理想的结果,但我确实通过将 docker-compose 文件中的 nginx 端口设置为我想为每个应用程序使用的端口来解决问题应用程序,然后使用单独的服务器块将端口路由到每个应用程序正在通信的端口。

码头工人撰写:

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;
    }
}

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多