镜像地址:https://hub.docker.com/r/tiangolo/uvicorn-gunicorn-fastapi/
在项目目录新建Dockerfile
Dockerfile
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
COPY ./app /app
生成镜像
docker build -t myimage .
建立如下目录和文件
.
├── app
│ ├── main.py
├── docker-compose.yml
├── Dockerfile
└── start-reload.sh
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
start-reload.sh是个空文件,用来reload更改
docker-compose.yml
version: '3'
services:
fastapi:
image: myimage #这是上面生成的镜像
container_name: myfast #这是容器的名称
ports:
- 80:80 #端口映射
volumes:
- /home/afei/code/mydocker/fastapi/app:/app #目录映射
working_dir: /app #contain工作目录
# 运行后执行的命令 就可以在修改文件时自动加载
command: /start-reload.sh
开发调试的流程
用vscode打开目录,
打开vscode的终端,运行:docker-compose up
就可以看到docker反馈的信息,修改文件保存会重新加载
如果代码有错误,会打印出错误信息,docker会自动停止
修改代码错误后再运行:docker-compose up
如果docker已经运行,docker-compose up -d,可以使用docker-compose logs -f -t来实时显示log信息,不用关闭docker
使用vscode的rest client来调试api
因为fastapi主要是用来做api的,所以就可以在vscode中调试,不用切换到浏览器。