1. 编写 Flask 应用
确保你的Flask应用程序已经编写完成并测试通过。这个应用程序可以是一个简单的示例,例如:
python
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
2. 创建Gunicorn配置文件
在同一目录中创建一个Gunicorn配置文件gunicorn_config.py
:
python
# gunicorn_config.py
bind = '0.0.0.0:8000'
workers = 4 # 根据服务器的CPU核数调整
threads = 2 # 每个worker的线程数
timeout = 120
3. 创建Dockerfile
在同一目录中创建一个名为Dockerfile
的文件:
python
# Dockerfile
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制当前目录内容到工作目录
COPY . /app
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露端口
EXPOSE 8000
# 运行Gunicorn服务器
CMD ["gunicorn", "-c", "gunicorn_config.py", "app:app"]
4. 创建requirements.txt文件
在同一目录中创建一个requirements.txt
文件,列出所需的Python包:
bash
flask
gunicorn
5. 构建Docker镜像
在终端中导航到包含上述文件的目录,并运行以下命令以构建Docker镜像:
bash
docker build -t flask-gunicorn-app .
6. 运行Docker容器
构建完成后,运行以下命令启动Docker容器:
bash
docker run -d -p 8000:8000 flask-gunicorn-app
这将会在后台运行你的容器,并映射本地主机的8000端口到容器的8000端口。
7. 进行负载测试
你可以使用工具如ab
(Apache Bench)或wrk
来进行负载测试。例如,使用ab
进行测试:
bash
ab -n 1000 -c 100 http://localhost:8000/
这会发送1000个请求,并发数为100,以测试你的应用在高并发情况下的表现。
总结
通过以上步骤,你已经成功在Docker中部署了一个基于Gunicorn和Flask的高并发应用。根据实际需求,你可以调整Gunicorn的workers和threads参数,以及根据应用的复杂度调整Flask应用本身的优化策略。这样可以确保应用在高并发环境下的高效运行。