当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/311483.html

相关文章:

  • C#中的除法
  • PostGIS面试题及详细答案120道之 (081-090 )
  • cuda编程笔记(12)--学习cuFFT的简单使用
  • 【Mybatis】MyBatis分页的三种实现方式,Log4j的使用
  • Elasticsearch 混合检索一句 `retriever.rrf`,把语义召回与关键词召回融合到极致
  • 模拟激光相机工作站版本6.0 5.2.32 6.0.44 6.031 5.2.20
  • 题解:P4447 [AHOI2018初中组] 分组
  • 归并排序(简单讲解)
  • [论文阅读] 人工智能 + 软件工程 | GitHub Marketplace中CI Actions的功能冗余与演化规律研究
  • 【RK3568 看门狗驱动开发详解】
  • Kubernetes Gateway API 详解:现代流量路由管理方案
  • 【最后203篇系列】030 强化学习探索
  • 浏览器及java读取ros1的topic
  • 重生之我在暑假学习微服务第八天《OpenFeign篇》
  • 暑期算法训练.13
  • cv弹窗,退款确认弹窗
  • 数据结构(12)二叉树
  • 深入 Go 底层原理(六):垃圾回收(GC)
  • 数据资产是什么?
  • MySQL 内置函数
  • npm安装下载慢问题
  • 离线安装docker和docker-compose
  • 【人工智能agent】--服务器部署PaddleX 的 印章文本识别模型
  • JVM 调优中JVM的参数如何起到调优动作?具体案例,G1GC垃圾收集器参数调整建议
  • Junit5+Maven+RestAssured+Allure接口自动化框架
  • VScode对Ubuntu用root账号进行SSH远程连接开发
  • MSQL-聚簇索引与非聚簇索引的比较
  • k8s的pod的YAML问题
  • 公共卫生场景下漏检率↓76%:陌讯动态特征融合算法在口罩识别中的实战解析
  • 7月销售超5万辆,零跑汽车再创单月历史新高