一、数据准备

一个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命令查看日志。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐