当前位置: 首页 > 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.dtcms.com/a/264295.html

相关文章:

  • 提示技术系列——方向性刺激提示
  • Jenkins生态与拓展:构建现代化DevOps工具链的终极指南
  • eNSP实验一:IPv4编址及IPv4路由基础
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的抖音渠道力拓展与多渠道利润增长研究
  • RESTful API 设计原则深度解析
  • STM32——代码开发顺序
  • WPF学习笔记(18)触发器Trigger
  • langchain从入门到精通(三十三)——RAG优化策略(九) MultiVector实现多向量检索文档
  • 原神八分屏角色展示页面(纯前端html,学习交流)
  • 《汇编语言:基于X86处理器》第6章 条件处理(1)
  • 每日八股文7.1
  • python-函数模块包
  • 网络基础知识与代理配置
  • 单元测试详解
  • AKAZE(Accelerated-KAZE)图像特征点检测算法详解和C++代码实现示例
  • 6.2 实现文档加载和切分和简易向量数据库的功能
  • 【在 FastAdmin 中取消特定字段的搜索功能】
  • Conda 虚拟环境克隆与 PyCharm 配置教程
  • 高阶数据结构------并查集
  • uniapp+vue3 中使用echart 以及echart文件过大需要分包的记录
  • 吸烟行为检测数据集介绍-2,108张图片 公共场所禁烟监控 健康行为研究
  • SpringCloud系列(45)--SpringCloud Bus简介
  • UE5 - 制作《塞尔达传说》中林克的技能 - 18 - 磁力抓取器
  • 强化学习【chapter0】-学习路线图
  • Java Selenium反爬虫技术方案
  • 07 Springboot+netty+mqtt服务端实现【重构】
  • 数据结构之带头双向循环链表
  • 苍穹外卖系列问题之Day11_05营业额统计代码开发2 StringUtils.join(dateList,“,“)报错
  • Cross-modal Information Flow in Multimodal Large Language Models
  • 【1.6 漫画数据库设计实战 - 从零开始设计高性能数据库】