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

Docker制作python环境

原文地址:Docker制作python环境 – 无敌牛

欢迎参观我的博客网站:无敌牛 – 技术/著作/典籍/分享等

分享一个用docker制作不同python环境的方法。

python的版本更新很快,这些版本都可以从官网下载到源码。在工作中涉及给老代码搭建环境的问题,而系统源里很有可能是没有对应的python版本的,这时候,我们就需要手动搭建环境了。在系统中搭建的方法可以查看往期文章:python历史版本安装 – 无敌牛

下载了源码,制作docker镜像就比较简单了。下面是以python3.7.8为例制作的Dockerfile 文件。系统镜像使用的阿里龙蜥8.6环境(CentOS的平替系统)。在国内官网docker的源不太友好,所有需要修改一下docker源为国内的镜像,这样下载更快更方便。修改源具体方法查看往期文章:dify大模型应用开发平台搭建 – 无敌牛 安装运行 小节。

# 使用 OpenAnolis 8.6 作为基础镜像
FROM anolisos:8.6# 设置系统源
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' \-e 's|^#baseurl=http://mirrors.tuna.tsinghua.edu.cn/anolis|baseurl=https://mirrors.aliyun.com/anolis|g' \-i.bak /etc/yum.repos.d/*.repo# 安装编译 Python 3.7 所需的依赖
RUN dnf update -y && \dnf groupinstall -y "Development Tools" && \dnf install -y \wget \gcc \make \zlib-devel \bzip2-devel \readline-devel \sqlite-devel \openssl-devel \ncurses-devel \tk-devel \libffi-devel \xz-devel \gdbm-devel \vim \net-tools \tzdata && \dnf clean all# 设置时区为上海
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo "Asia/Shanghai" > /etc/timezone# 设置环境变量
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV PYTHONUNBUFFERED 1# 下载并编译安装 Python 3.7。直接下载可能会下载失败,可以用浏览器下载好后COPY到镜像。
#    wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz 
COPY Python-3.7.8.tgz .
RUN tar xzf Python-3.7.8.tgz && \cd Python-3.7.8 && \./configure --enable-optimizations --enable-shared --prefix=/usr/local LDFLAGS="-Wl,-rpath /usr/local/lib" && \make -j$(nproc) && \make altinstall && \rm -rf Python-3.7.8*# 创建符号链接
RUN ln -s /usr/local/bin/python3.7 /usr/local/bin/python3 && \ln -s /usr/local/bin/pip3.7 /usr/local/bin/pip3# 配置pip
RUN pip3.7 config set global.index-url https://pypi.doubanio.com/simple# 安装依赖 requirements.txt 是 python服务 需要安装的库。
COPY requirements.txt /app/requirements.txt
RUN pip3.7 install --no-cache-dir -r /app/requirements.txt# 另外,对于python2.X,官方已经不再支持了,就算官网支持,但是还是有一些库pip下载不到的情况,怎么办呢?
# 注意到:在编译的时候,我们把python3.7的库安装在了 /usr/local/lib/python3.7/,如果pip源里找不到,而我们手里有对应版本的库。可以直接把依赖复制到 /usr/local/lib/python3.7/site-packages 目录下即可。
# 例如,yara的库就整理的不太好,我就是直接拿原系统的库整理的。
COPY yara_python-4.2.0-py3.7-linux-x86_64.egg/yara.py /usr/local/lib/python3.7/site-packages/yara.py
COPY yara_python-4.2.0-py3.7-linux-x86_64.egg/yara.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.7/site-packages/yara.cpython-37m-x86_64-linux-gnu.so
COPY yara_python-4.2.0-py3.7-linux-x86_64.egg/libyara.so.9.0.1 /lib/libyara.so.9.0.1
RUN ln -s /lib/libyara.so.9.0.1 /lib/libyara.so.9 && ldconfig# 设置工作目录
WORKDIR /app# 拷贝你的python服务
COPY YOUR_SERVER /app/YOUR_SERVER# 可以创建你需要的目录,运行时可以设置挂载宿主机的目录。
RUN mkdir -p /app/log /data# 启动命令。注意:这里一定不要后台运行。如果转为后台,则会被认为docker已运行完成。
CMD ["python3.7", "YOUR_SERVER/YOUR_SERVER.py"]
http://www.lryc.cn/news/578513.html

相关文章:

  • C++ 11 中 condition_variable 的探索与实践
  • 当足球遇上AI:赛事分析、伤病预测与智能裁判的崛起
  • postman入门篇
  • RabbitMQ - SpringAMQP及Work模型
  • k8s将service的IP对应的不同端口分配到不同的pod上
  • Vue 3 中的 `h` 函数详解
  • CAD文件处理控件Aspose.CAD教程:使用 Python 将绘图转换为 Photoshop
  • 【Python】字典get方法介绍
  • 面试拷打-20250701
  • 计网学习笔记第1章 计算机网络体系结构(灰灰题库)
  • 论文阅读笔记 NoPoSplat
  • 笔记/计算机网络
  • 动手学深度学习13.5. 多尺度目标检测-笔记练习(PyTorch)
  • 推客系统小程序终极指南:从0到1构建自动裂变增长引擎,实现业绩10倍增长!
  • (JAVA)自建应用调用企业微信API接口,实现消息推送
  • uniapp+vue写小程序页面,实现一张图片默认放大后,可以在容器内上下左右拖动查看
  • android13 如何定时输出app的帧率FPS
  • 应急响应类题练习——玄机第五章 Windows 实战-evtx 文件分析
  • mac重复文件清理,摄影师同款清理方案
  • COCO、VOC 和 YOLO三种主流目标检测数据格式的详细对比与示例说明
  • Java Selenium反爬虫技术方案
  • 笔记本电脑怎样投屏到客厅的大电视?怎样避免将电脑全部画面都投出去?
  • 基于c#语言的股票模拟交易软件的开发与实现
  • Vue3 使用 i18n 实现国际化完整指南
  • AiPy实战(7):一键生成天气组件,解放UI设计的双手
  • 应用场景全解析:飞算 JavaAI 的实战舞台
  • 业界优秀的零信任安全管理系统产品介绍
  • 启用不安全的HTTP方法
  • 内部类与Lambda的衍生关系(了解学习内部类,Lambda一篇即可)
  • [6-02-01].第48节:场景整合 -搭建父项目