uvicorn-gunicorn-fastapi
是fastapi官方提及的一个docker镜像,里面包含了一个简易的fastapi应用,同时配置好了gunicorn等组件。用此镜像启动一个容器,包含的简易的fastapi应用会自动运行。本文将替换这个简易的fastapi应用
准备工作
假设你已经下载好 “uvicorn-gunicorn-fastapi ” 镜像:
准备好你自己的fastapi应用
目录结构如下即可:
- xxx.com
- main.py
- requirements.txt
- …任意问文件或文件夹
其中main.py,必须是这个名字,不能更改,其内容如下:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "这是新的"}
其中”app = FastAPI()“,是关键,名字必须是app,必须是个全局变量。gunicorn等wsgi组件会导入此FastAPI实例。你可以在此文件中加入其他的所有视图或路由
假设我本机的目录是:/root/xxx.com
启动容器
docker run --privileged=true -v /root/wujin/rpa-support-app:/app -p 80:80 -d 1798e2413f6d /bin/bash -c "python -m pip install -r /app/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple;/start.sh"
- –privileged=true, 避免在容器没有权限读取本机/root/xxx.com文件导致启动失败
- -v /root/xxx.com:/app,挂在本机目录到容器内目录
- -p 80:80 端口映射,本机端口映射到容器端口
- -d 1798e2413f6d,使用哪个镜像
- /bin/bash -c “python -m pip install -r /app/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple;/start.sh” 容器启动后执行命令。先安装python包再启动fastapi应用,否则会缺少依赖包无法启动。
验证
curl http://127.0.0.1