将python的FastAPI项目通过docker部署在Linux服务器上
一、数据准备
一个fastAPI项目,其项目结构应该如下所示
/project
├── app
│ ├── __init__.py
│ ├── app.py # 主应用程序入口
│ ├── database # 数据库相关代码,可选
│ │ ├── __init__.py
│ │ └── database.py
├── Dockerfile
├── requirements.txt
其中,代码放在app文件夹下,与其同级的有Dockerfile文件和requirements.txt文件。requirements.txt文件声明了此python项目需要的所有的包(如果没有,可通过 pip freeze > requirements.txt 命令去生成),而Dockerfile文件则是执行docker命令打包为镜像的关键文件。
Dockerfile的编写规则如下
# 使用官方的Python运行时作为父镜像
FROM tiangolo/uvicorn-gunicorn:python3.8
# 设置工作目录
WORKDIR /app
# 复制requirements文件
COPY ./requirements.txt /app/requirements.txt
# 安装依赖包
RUN pip install --no-cache-dir -r /app/requirements.txt
# 复制项目文件
COPY ./app /app
# 暴露端口
EXPOSE 8301
# 运行uvicorn
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8301"]
不同的项目,通常只需要修改暴露端口即可。
将源码拷贝(包括源码,Dockerfile和requirements.txt )到你想要的目录下,如 /path/test,然后可以开始准备docker部署的过程。
二、docker部署
进入Dockerfile文件和代码所在的路径,执行下面的命令
1. 构建镜像,其中image-name是镜像的名称,tag是镜像的标签:docker build -t image-name:tag
2. 启动镜像,其中container-name是启动镜像后的容器名称,"7000:7000"中前的是外部访问端口,后面的是docker内部端口:docker run -d -p 8301:8301 --name container-name image-name:tag
构建了镜像后,可以通过docker image命令,查看docker内的镜像
启动了镜像后,可以通过docker ps命令,查看docker内启动的容器。通过docker logs container-name命令查看日志。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)