用docker制作可以调用的BGE-embedding接口服务镜像
1,首先写好本地调用通过的flask接口embedding_service.py
2,pip freeze > requirements.txt导出requirement.txt文件。
3,写Dockerfile(注意首字大写且不带后缀,注意py和所需模型文件夹都在Dockerfile同一级目录)
FROM python:3.8 # 选择Python最新版本作为基础镜像
ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple #指定镜像源可以防止在镜像制作的时候下载包超时。
WORKDIR /app # 设置工作目录为/app(这时候镜像就像一台机器,这个就是定义在这个机器中的工作目录)
COPY requirements.txt . # 复制requirements.txt到当前目录(WORKDIR)
RUN pip install -r requirements.txt # 安装所需的Python包
COPY . . # 复制当前目录下的所有文件到工作目录(Dockerfile同级下的所有文件到WORKDIR)
CMD [“python”, “main.py”] # 指定容器启动时要运行的命令
4,docker build -t bge_embedding_image .(注意这个点不要丢掉)
docker images
docker run -p 8080:5000 bge_embedding_image 这里在运行镜像容器时可自行做端口映射这里5000是py脚本里的原始服务端口。8080是实际迁移后机器运行容器的端口。
调用样例
import requests
url = “http://localhost:8080/bge/embedding”
data = {“sentence”: “这是一个测试样例”}
response_post = requests.post(url, data=data)
print(response_post.json())
镜像导出
docker save -o bge_embedding_image.tar bge_embedding_image:latest (latest是镜像标签(用于版本记录),没有自定义标签的话默认是latest标签)
curl -X POST -d ‘sentence=这是一个测试样例’ http://localhost:8080/bge/embedding