llm_api使用python开发,当项目上需要落地招标文件在线检能力时,需要在项目服务器上部署llm_api。在实施过程中遇到了两个问题:1. 使用miniconda部署,步骤比较繁琐;2. 项目上存在不同的CPU架构,需要进行适配。
为了解决上述问题,采用docker buildx构建多平台镜像,部署时只需要将镜像导入运行,即可完成,方便快捷。(实际操作在wsl2下完成,主要是需要解决网络问题)
1
2
3
4
5
6
7
8
9
10
|
# 启用Buildx
docker buildx create --use
# 启用 QEMU 模拟(用于跨架构运行)
docker run --privileged --rm tonistiigi/binfmt --install all
# 构建镜像并导出docker镜像
docker buildx build --platform linux/amd64 -t llm_api:amd64 --output=type=docker . && docker save -o llm_api-amd64.tar llm_api:amd64
docker buildx build --platform linux/arm64 -t llm_api:arm64 --output=type=docker . && docker save -o llm_api-arm64.tar llm_api:arm64
|
llm_api的Dockerfile如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 使用多平台兼容的 Python 基础镜像(自动适配 arm64 或 amd64)
FROM --platform=$TARGETPLATFORM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 安装系统依赖(可选,根据你的 Python 包需求)
# RUN apt-get update && apt-get install -y \
# gcc \
# && rm -rf /var/lib/apt/lists/*
# 复制依赖文件
# COPY requirements.txt .
# 安装 Python 依赖
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir "fastapi[standard]" && \
pip install --no-cache-dir json-repair && \
pip install --no-cache-dir requests && \
pip install --no-cache-dir tiktoken
# 暴露端口(FastAPI 默认 8000)
# EXPOSE 8000
# 启动命令
CMD ["python", "server.py"]
|
将生成的tar文件复制到项目服务器上,注意:需要对应CPU的架构(amd64或arm64)。
1
2
3
4
5
|
# 导入镜像
docker load -i llm_api-amd64.tar
# 运行镜像
docker run --rm -d --name=llm_api --restart=unless-stopped --net=host -v /root/llm_api:/app llm_api:amd64
|