docker:将python开发的大模型应用,打成docker容器
本文介绍了基于大模型的应用系统在离线环境部署时,通过Docker容器解决依赖包缺失问题的方法。使用Miniconda3基础镜像,通过conda-pack预打包环境(12G),显著缩短部署时间(相比在线安装节省约4小时)。详细说明了Dockerfile编写过程,包括环境配置、文件复制、路径设置等步骤,并提供了容器构建和运行的命令。该方法虽然增大了部署包体积(从4G增至12G),但有效解决了信创服务器离线部署的依赖问题,提升了部署效率。
一、环境
docker:28.2.2
python:3.10
操作系统:Ubuntu 24.04.2 LTS
二、原因
基于大模型开发的应用系统,在部署到离线环境的信创服务器时,经常存在缺包问题,为了解决快速部署,决定打成docker容器。
不足:打成docker容器,容量比较大,达到12G,不打成docker容器,大概4G左右。
三、制作Dockerfile文件
vi Dockerfile
# 使用包含 Miniconda3 的基础镜像
FROM continuumio/miniconda3:latest# 安装 vi 编辑器、 OpenCV 所需的图形库 、libreoffice 格式转换
RUN apt-get update && \
apt-get install -y vim libgl1-mesa-glx libreoffice && \
rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /opt# 安装 conda-pack
RUN conda install -c conda-forge conda-pack# 复制预打包的 Conda 环境
COPY langchain03.tar.gz /opt/conda/envs/langchain03.tar.gz# 解压 Conda 环境到正确位置
RUN mkdir -p /opt/conda/envs/langchain03 && \
cd /opt/conda/envs/langchain03 && \
tar -xzf /opt/conda/envs/langchain03.tar.gz && \
rm /opt/conda/envs/langchain03.tar.gz# 检查解压后的文件结构
RUN ls -la /opt/conda/envs/langchain03
RUN ls -la /opt/conda/envs/langchain03/conda-meta# 复制主项目
COPY dms_llm_server_deepseek /opt/dms_llm_server_deepseek
# 复制nltk_data到usr/share目录中,解决nltk_data离线下载问题
COPY dms_llm_server_deepseek/nltk_data /usr/share/nltk_data# 复制字体
COPY dmsfonts /usr/share/fonts/dmsfonts# 进入主项目目录
WORKDIR /opt/dms_llm_server_deepseek# 激活 Conda 环境并设置 PATH
ENV PATH=/opt/conda/envs/langchain03/bin:$PATH# 设置 start.sh 可执行权限
RUN chmod +x /opt/dms_llm_server_deepseek/start.sh# 挂载目录
VOLUME /opt/dms_llm_server_deepseek# 作者信息
LABEL maintainer="victory <32238170@qq.com>"CMD ["conda", "run", "-n", "langchain03", "python", "-u", "/opt/dms_llm_server_deepseek/startup.py", ">>", "/opt/dms_llm_server_deepseek/logs/server.log", "2>&1"]
注:不采用预打包的 Conda 环境,耗时回比较长,大概4个小时。
如采用下面的方式,导出conda环境的依赖,再在容器中下载安装
conda activate langchain03
conda env export --no-builds > environment.yml
四、提前将虚拟环境打成tar.gz格式
1.主机安装conda-pack
#conda install conda-pack
2.查看conda环境
#conda info -e
3.指定虚拟机环境进行压缩
conda pack -n langchain03 -o langchain03.tar.gz # 自定义压缩包名
五、编译
docker buildx build --no-cache -t dms_llm_server:1.3 .
六、运行
docker run -dit --name dms_llm_server -p 5554:5552 -v /home/project_app/dockers/dms_llm_server:/opt/dms_llm_server_deepseek dms_llm_server:1.3