在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Docker 学习https://www.cnblogs.com/poloyy/p/15257059.html 项目结构. ├── app │ ├── __init__.py │ └── main.py ├── Dockerfile └── requirements.txt FastAPI 应用程序 main.py 代码 from typing import Optional 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: Optional[str] = None): return {"item_id": item_id, "q": q} Dockerfile # 1、从官方 Python 基础镜像开始 FROM python:3.9 # 2、将当前工作目录设置为 /code # 这是放置 requirements.txt 文件和应用程序目录的地方 WORKDIR /code # 3、先复制 requirements.txt 文件 # 由于这个文件不经常更改,Docker 会检测它并在这一步使用缓存,也为下一步启用缓存 COPY ./requirements.txt /code/requirements.txt # 4、运行 pip 命令安装依赖项 RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt # 5、复制 FastAPI 项目代码 COPY ./app /code/app # 6、运行服务 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"] 第四步:运行 pip 命令解析
Docker 缓存这里有一个重要的技巧Dockerfile,首先只复制依赖项的文件,而不是 FastAPI 应用程序代码 ./requirements.txt /code/requirements.txt
构建 Docker Image在 Dockerfile 打开命令行
查看镜像
启动 docker 容器
查看容器
访问 127.0.0.1/ 访问 127.0.0.1/docs 带有 Gunicorn 的官方 Docker 镜像 - Uvicorn
官方栗子 FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9 COPY ./requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt COPY ./app /app 应用场景
使用 poetry 的 docker image # 第一阶段:将仅用于安装 Poetry 并从 Poetry 的 pyproject.toml 文件生成带有项目依赖项的 requirements.txt。 FROM tiangolo/uvicorn-gunicorn:python3.9 as requirements-stage # 将 /tmp 设置为当前工作目录;这是我们将生成文件requirements.txt的地方 WORKDIR /tmp # 安装 poetry RUN pip install poetry # 复制 COPY ./pyproject.toml ./poetry.lock* /tmp/ # 生成 requirements.txt RUN poetry export -f requirements.txt --output requirements.txt --without-hashes # 这是最后阶段,在这往后的任何内容都将保留在最终容器映像中 FROM python:3.9 # 将当前工作目录设置为 /code WORKDIR /code # 复制 requirements.txt;这个文件只存在于前一个 Docker 阶段,这就是使用 --from-requirements-stage 复制它的原因 COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt # 运行命令 RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt # 复制 COPY ./app /code/app # 运行服务 CMD ["uvicorn", "app.1_快速入门:app", "--host", "0.0.0.0", "--port", "80"]
poetry 详细教程 https://www.ogeek.net/article/195070.htm 到此这篇关于FastAPI 部署在 Docker的文章就介绍到这了,更多相关FastAPI 部署在 Docker 内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论