将模型 API 容器化
用于 FastAPI 与模型的 Dockerfile、多阶段构建、健康检查端点,以及 docker-compose。
将模型 API 容器化 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
为什么使用 Docker?
Docker 会将您的 API、Python 版本和所有依赖项打包到一个可移植的镜像中,使其在任何机器上都能以相同方式运行。它解决了“在我的电脑上能运行”的问题,也是交付机器学习服务的标准方式。
Dockerfile
Dockerfile 是一组构建步骤组成的配方。每条指令都会创建一个可缓存的层,因此合理安排步骤顺序可以加快重新构建。
FROM python:3.11-slim
FROM 行选择基础镜像。python:3.11-slim 是一个预装 Python 的小型 Debian 镜像,比完整镜像轻量得多,可以缩小最终体积和攻击面。
FROM python:3.11-slimWORKDIR /app
WORKDIR 设置容器内的工作目录;后续的 COPY 和 RUN 命令都会以它为相对路径,从而使路径保持整洁。
WORKDIR /app先复制 requirements.txt
在源代码之前,先单独复制 requirements.txt。由于 Docker 会缓存各层,只有依赖项发生变化时才会重新安装依赖,而不是每次修改代码都重新安装,从而大幅加快重新构建。
COPY requirements.txt .RUN pip install --no-cache-dir
RUN 执行构建命令。--no-cache-dir 会跳过 pip 的下载缓存,使镜像保持更小(镜像内部并不需要这个缓存)。
RUN pip install --no-cache-dir -r requirements.txt复制源代码
现在复制应用的其余部分。将这一步放在 pip 安装之后,意味着修改代码不会使缓存的依赖层失效。
COPY . .EXPOSE 8000
EXPOSE 记录容器监听的端口。它本身不会发布端口(您需要在运行时使用 -p 完成发布),但会向读者和工具表明这一意图。
EXPOSE 8000CMD 指令
CMD 定义容器启动时运行的默认命令。在这里,我们启动 uvicorn 并绑定到 0.0.0.0,使其可以从容器外部访问。
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]完整的 Dockerfile
所有部分都按正确且有利于缓存的顺序排列:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]构建并运行
为镜像指定标签并进行构建,然后运行镜像,使用 -p 将容器端口映射到主机。
# terminal
docker build -t model-api .
docker run -p 8000:8000 model-api快速检查
请检验您对 Docker 的掌握情况。
回顾
您已经将 API 容器化:使用 FROM python:3.11-slim、WORKDIR /app,先复制 requirements.txt,执行 RUN pip install --no-cache-dir,再复制源代码,使用 EXPOSE 8000,并通过 CMD 启动 uvicorn。按照有利于层缓存的顺序安排步骤,可以保持重新构建的速度。至此,FastAPI 服务课程和这一批内容全部完成。
常见问题解答
「将模型 API 容器化」课时是免费的吗?
是的 — 「将模型 API 容器化」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「将模型 API 容器化」这节课中我会学到什么?
用于 FastAPI 与模型的 Dockerfile、多阶段构建、健康检查端点,以及 docker-compose。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「将模型 API 容器化」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。