docker - Flask应用程序Docker Nginx

标签 docker nginx flask

我构建了2个包含Flask应用程序(Web容器)的Docker镜像,以及另一个包含Nginx作为负载均衡器的镜像(nginx容器)。

使用docker-compose up and scale命令:

docker-compose up --scale web=2

结果:
Starting dockerflaskloadb_web_1 ... done
Creating dockerflaskloadb_web_2 ... done
Starting dockerflaskloadb_nginx_1 ... done
Attaching to dockerflaskloadb_web_1, dockerflaskloadb_web_2, dockerflaskloadb_nginx_1
web_1    | [2018-08-22 11:27:20 +0000] [1] [INFO] Starting gunicorn 19.6.0
web_1    | [2018-08-22 11:27:20 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
web_1    | [2018-08-22 11:27:20 +0000] [1] [INFO] Using worker: sync
web_1    | [2018-08-22 11:27:20 +0000] [8] [INFO] Booting worker with pid: 8
web_2    | [2018-08-22 11:27:21 +0000] [1] [INFO] Starting gunicorn 19.6.0
web_2    | [2018-08-22 11:27:21 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
web_2    | [2018-08-22 11:27:21 +0000] [1] [INFO] Using worker: sync
web_2    | [2018-08-22 11:27:21 +0000] [8] [INFO] Booting worker with pid: 8

这是我在Flask应用程序中通过一些获取请求得到的:
nginx_1  |  [22/Aug/2018:11:33:31 +0000] "GET /home HTTP/1.1" 200 5640 "http://192.168.99.100/about" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-" -172.22.0.4
nginx_1  |  [22/Aug/2018:11:33:33 +0000] "GET /home HTTP/1.1" 200 5640 "http://192.168.99.100/home" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-" -172.22.0.4
nginx_1  |  [22/Aug/2018:11:33:33 +0000] "GET /about HTTP/1.1" 200 3195 "http://192.168.99.100/home" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-" -172.22.0.4

该应用程序运行正常,但我想知道每个请求将使用哪个容器(web1或web2)。

有什么方法可以用来在我的 flask 应用程序中显示容器ID?
谢谢

最佳答案

默认情况下,容器的主机名是容器ID。所以像:

import os
id = os.environ['HOSTNAME']

要么
import socket
print(socket.gethostname())

关于docker - Flask应用程序Docker Nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966181/

相关文章:

bash - 使用输入参数从kubernetes运行python脚本

docker - 如何使用 deviantony/docker-elk 将 CSV 或 JSON 数据导入 Elasticsearch

Python3错误 “ImportError: No module named”有__init__.py

c# - Visual Studio 2019不会在项目打开时提取所需的Docker镜像

http - Nginx http 和 https block 配置

Nginx 403 禁止位置和本地主机

redirect - Nginx + Php-fpm 的延迟问题

python - 使用 Flask-Restful 的字段,如何获得 "catchall"字段?

python - 当我希望文本在 Flask/jinja2 中显示为 html 时,文本已转义

maven - 多 Maven 模块 Spring MVC 项目到 Spring Boot