java 单机接口限流处理方案
468
2022-06-06
https://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 命令解析
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
这里有一个重要的技巧Dockerfile,首先只复制依赖项的文件,而不是 FastAPI 应用程序代码
./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
./app /code/app
在 Dockerfile 打开命令行
docker build -t myimage .
查看镜像
docker images
启动 docker 容器
docker run -d --name mycontainer -p 80:80 myimage
查看容器
docker ps
访问 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:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~