镜像地址:https://hub.docker.com/r/tiangolo/uvicorn-gunicorn-fastapi/
在项目目录新建Dockerfile
Dockerfile
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7COPY ./app /app
生成镜像
docker build -t myimage .
建立如下目录和文件
.
├── app
│ ├── main.py
├── docker-compose.yml
├── Dockerfile
└── start-reload.sh
main.py
from fastapi import FastAPIapp = 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中调试,不用切换到浏览器。
