您的位置:首页 > 游戏 > 手游 > 合肥信息网_网站架构工程师_宝鸡seo_太原seo优化公司

合肥信息网_网站架构工程师_宝鸡seo_太原seo优化公司

2025/1/6 22:34:27 来源:https://blog.csdn.net/u014394049/article/details/143026041  浏览:    关键词:合肥信息网_网站架构工程师_宝鸡seo_太原seo优化公司
合肥信息网_网站架构工程师_宝鸡seo_太原seo优化公司

Docker 构建 Miniconda3 Python 运行环境实战指南

文章目录

  • Docker 构建 Miniconda3 Python 运行环境实战指南
      • 一 准备 environment.yml
      • 二 获取项目 pip 信息
      • 三 Dockerfile 编写
      • 四 构建多平台镜像
        • 1 准备组件
        • 2 构建镜像
        • 3 导出镜像
        • 4 导入镜像
      • 五 注意事项

本文详细介绍了如何通过 Docker 构建 Miniconda3 的 Python 运行环境,并适用于多平台的镜像构建。首先,通过 environment.yml 文件导出和编辑 Conda 环境配置。接着,演示了如何通过 requirements.txt 文件获取项目依赖,并将其配置到 Docker 镜像中。本文还提供了具体的 Dockerfile 编写步骤,以确保通过 Miniconda 创建和管理 Python 环境。最后,展示了如何使用 Docker Buildx 工具构建适用于不同平台(如 amd64、arm64)的多平台镜像,并导入导出镜像文件,方便部署和分享应用程序。

预备课

Docker 安装与配置:从入门到部署

Docker 镜像的构建与多架构支持

一 准备 environment.yml

导出当前环境配置

# 导出当前的 Conda 环境配置
$ conda env export > environment.yml
# 排除某些包(比如依赖系统的包),可以添加 --no-builds 选项来忽略包
$ conda env export --no-builds > environment.yml
# 导出来的挺复杂的,可能含有大量不需要的测试包。

也可以手动编辑 environment.yml。

name: yourcondaenv
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- conda-forge- defaults
dependencies:- python=3.10- pip:- numpy==1.26.4- pandas==2.2.3- matplotlib==3.9.2- scikit-learn==1.5.2- xgboost==2.1.1- lightgbm==4.5.0- numba==0.60.0- seaborn==0.13.2- requests==2.32.3
prefix: /opt/conda/envs/yourcondaenv

python 的版本实际项目选择。

二 获取项目 pip 信息

手动编辑 environment.yml,获取项目 pip 信息,将配置导入 requirements.txt 文件中。

$ pip freeze > requirements.txt

举例,项目的 requirements.txt 信息为

  - numpy==1.26.4- pandas==2.2.3- matplotlib==3.9.2- scikit-learn==1.5.2- xgboost==2.1.1- lightgbm==4.5.0- numba==0.60.0- seaborn==0.13.2- requests==2.32.3

把这个信息复制粘贴到 environment.yml 中的 pip 下。

三 Dockerfile 编写

假如当前目录结构是这样的

app
|
|---src    # 开发目录
|     |---your 目录
|---.dockerignore   
|
|---Dockerfile   
|
|---environment.yml 
|
|---main.py   
|
|---requirements.txt	 

请在 app 目录下构建以下 Dockerfile 文件

# 使用官方 Miniconda 运行时作为基础镜像,版本为 24.7.1-0
FROM continuumio/miniconda3:24.7.1-0# 设置环境变量 LANG 为中文 UTF-8 编码
ENV LANG zh_CN.UTF-8# 在系统的 profile 文件中添加 LANG 的环境变量,确保 shell 会话中应用该设置
RUN echo "export LANG=zh_CN.UTF-8" >> /etc/profile# 设置工作目录为 /app,后续的操作都会在该目录下进行
WORKDIR /app# 将当前目录下的所有文件复制到容器中的 /app 目录,通常包括应用程序代码
COPY . /app# 将 environment.yml 文件复制到容器中,以便后续用于创建 Conda 环境
COPY environment.yml .# 使用 conda 根据 environment.yml 创建环境,并清理不必要的文件
RUN conda env create -f environment.yml && conda clean -a -y && rm environment.yml# 指定使用 conda 环境 'yourcondaenv' 的 shell,以便在容器内执行命令
SHELL ["conda", "run", "-n", "yourcondaenv", "/bin/bash", "-c"]# 暴露端口 8193,使容器的该端口可以被外部访问,通常用于 Web 服务
EXPOSE 8193# 容器启动时执行的命令,首先激活 Conda 环境,然后运行应用程序主文件 main.py
ENTRYPOINT ["bash", "-c", "source activate yourcondaenv && python /app/main.py"]

四 构建多平台镜像

1 准备组件

安装 buildx(如果已安装请跳过),举例 操作系统为 centos 7.9 如下

sudo yum install docker-buildx-plugin
2 构建镜像

构建多平台镜像语法如下

$ docker buildx build --platform your平台 -t 镜像名:版本 .

举例,构建 amd64 和 arm64 平台镜像

# 构建 amd64 架构镜像
docker buildx build --platform linux/amd64 -t yourproj:1.0.4 .
# 构建 arm64 架构镜像
docker buildx build --platform linux/arm64 -t yourproj:1.0.4 .
3 导出镜像
docker save -o your-proj.tar yourproj:1.0.4
4 导入镜像
docker load < your-proj.tar

五 注意事项

构建出来的镜像根据实际情况 size 大小不一,可能会很大,构建时间长。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com