基于AnolisOS国产操作系统打造Python3.11.0容器基础开发环境

一 背景

随着国内操作系统市场的不断发展,AnolisOS作为一款优秀的国产操作系统,逐渐受到了广大开发者的关注。为了满足Python开发者的需求,本文将介绍如何基于AnolisOS打造Python3.11.0容器基础开发环境,为开发者提供更高效、更稳定的开发体验。

二 Dockerfile编写

Dockerfile全部内容如下:

FROM \openanolis/anolisos:8.6ARG PYTHON_VERSION="3.11.0"# curl -L -C - -o Python.tar.xz https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
# curl -L -C - -O https://www.openssl.org/source/openssl-1.1.1s.tar.gz
ADD [ "Python-${PYTHON_VERSION}.tar.xz", "/" ]ENV LC_ALL="C"# Deprecated since version 3.11, will be removed in version 3.13: The nis module is deprecated (see PEP 594 for details). dnf install libnsl2-devel
RUN set -eu; \dnf install -y gcc \make \zlib-devel \bzip2-devel \openssl-devel \ncurses-devel \sqlite-devel \readline-devel \tk-devel \gdbm-devel \xz-devel \libffi-devel \uuid-devel \libnsl2-develRUN set -eu; \cd Python-${PYTHON_VERSION}; \./configure \--enable-optimizations \--with-lto \--enable-shared \--enable-loadable-sqlite-extensions \--enable-option-checking=fatal \--with-system-expat \--with-openssl=/usr \--prefix=/usr/local/python; \make; \make install; \make clean; \dnf clean allFROM \openanolis/anolisos:8.6COPY \--from=0 /usr/local/python /usr/local/ENV TZ="Asia/Shanghai" \LANG="zh_CN.UTF-8" \LC_ALL="C"RUN set -eu; \dnf install -y glibc-langpack-zh \zlib-devel \bzip2-devel \openssl-devel \ncurses-devel \sqlite-devel \readline-devel \tk-devel \gdbm-devel \xz-devel \libffi-devel \uuid-devel \libnsl2-devel; \dnf clean allRUN set -eu; \ln -s /usr/local/bin/python3 /usr/bin/python; \ln -s /usr/local/bin/python3.11 /usr/bin/python3; \ln -s /usr/local/bin/pip /usr/bin/pip; \echo "/usr/local/lib">>/etc/ld.so.conf.d/python.conf; \ldconfig; \python -m pip install --upgrade pip; \python -c "import sysconfig; print(sysconfig.get_config_var('CONFIG_ARGS'))"FROM \openanolis/anolisos:8.6LABEL \AUTHOR="IVAN DU" \DATE="2022-12-05" \VERSION="1.0.0" \PYTHON_VERSION="3.11.0"ENV TZ="Asia/Shanghai" \LANG="zh_CN.UTF-8" \LC_ALL="C"COPY \--from=1 /usr /usr
COPY \--from=1 /etc /etcCMD [ "/usr/local/bin/python3" ]

本次使用多阶段镜像构建,构建完成后镜像大小763MB。

三 构建镜像

docker build -t python:anolisos-8.6-3.11.0 .

四 使用镜像

docker run -it --name python --rm python:anolisos-8.6-3.11.0 bash

五 参考资料

1、Docker镜像构建最佳实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——从终端输入 3 个数 a、b、c,按从大到小的顺序输出。

方式一 #include <stdio.h> int main() {int a, b, c, temp;printf("请输入三个数&#xff1a;\n");scanf("%d %d %d", &a, &b, &c);if (a < b) {temp a;a b;b temp;}if (a < c) {temp a;a c;c temp;}if (b < c) {temp…

[RoarCTF 2019]Easy Calc1 wp

[RoarCTF 2019]Easy Calc1 wp 预测试 手工测试 这个页面实现了一个简单的计算器功能&#xff0c;当输入 11 时能正确返回执行结果 2&#xff0c; 但当输入 11&&ifconfig 之类的表达式时&#xff0c;会出现弹窗&#xff1a; 查看源码 前端页面调用了一个函数&#xf…

掌握 RPC 接口测试:一篇详尽的接口测试手册

RPC 是什么&#xff1f; 远程过程调用协议&#xff08;RPC&#xff09;是一种技术&#xff0c;它允许在不同的机器上执行函数&#xff0c;就好像这些函数是本地调用一样。简单地说&#xff0c;客户端系统透明地从网络上的远程服务器软件请求服务&#xff0c;而无需理解复杂的网…

借助文档控件Aspose.Words,在Java中比较 Word、PDF 和 PPT 文档

文档比较是各个领域的一项关键任务&#xff0c;包括法律、出版和内容管理。它确保准确跟踪和审查对合同、报告或法律协议等文档的更改。Java 开发人员经常寻求高效可靠的方法来执行文档比较&#xff0c;而Aspose提供了强大的解决方案。在这篇博文中&#xff0c;我们将探讨如何高…

浏览器的事件循环机制(Event loop)

事件循环 浏览器的进程模型 何为进程&#xff1f; 程序运行需要有它自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 何为线程&#xff1f; …

C语言——字符函数和字符串函数(二)

&#x1f4dd;前言&#xff1a; 上一篇文章C语言——字符函数和字符串函数&#xff08;一&#xff09;对字符函数和字符串函数strlen&#xff0c;strcpy和strncpy&#xff0c;strcat和strncat进行了初步的讲解 这篇文章主要再讲解几个我们常用到的其他字符串函数&#xff08;附…

什么是加密和解密?如何进行数据加密和解密操作?

引言 数据加密和解密是信息安全领域中至关重要的概念。在现代通信和数据传输中&#xff0c;加密技术被广泛应用以确保数据的机密性和完整性。本文将介绍什么是加密和解密&#xff0c;以及如何在C语言中进行数据加密和解密的基本操作。 什么是加密和解密&#xff1f; 加密&am…

teamCity使用

1.server部署 2.地址 http://10.172.48.7:32204/favorite/projects?modebuilds 3.新增项目 拉取git项目 编辑配置 复制其他项目配置 步骤1.Maven 步骤2 build image 步骤3 push image 步骤4 deploy to k8s

mfc140u.dll丢失的解决方法的详细介绍,六种解决mfc140u.dll丢失的方法

今天的这篇文章将向各位分享一个有关电脑出现关于丢失mfc140u.dll错误的弹窗问题&#xff0c;这是一个很常见的问题。无论你是一名大学生还是其他身份&#xff0c;都可能会遇到这个问题。下面我会对mfc140u.dll丢失的解决方法进行详细的介绍。 一.六种解决mfc140u.dll丢失的方法…

Android笔记(十八):面向Compose组件结合Retrofit2和Rxjava3实现网络访问

一、Retrofit2 Square公司推出的Retrofit2库&#xff08;https://square.github.io/retrofit/&#xff09;&#xff0c;改变了网络访问的方式。它实现了网络请求的封装。Retrofit库采用回调处理方式&#xff0c;使得通过接口提交请求和相应的参数的配置&#xff0c;就可以获得…

辅助电源交流220V转5V200mA输出,不需要变压器

辅助电源交流220V转5V200mA输出&#xff0c;不需要变压器。 在当今智能家居、小家电等电子产品日益普及的时代&#xff0c;对辅助电源的需求也越来越大。一款高效、低成本、小巧封装的辅助电源芯片成为众多产品的迫切需求。今天&#xff0c;我们将为您介绍一款交流220V转5V200m…

Bytebase 2.12.0 - 改进自动补全和布局导航

&#x1f680; 新功能 支持 MySQL 高级自动补全。支持从 UI 上导入分类分级配置。 &#x1f514; 重大变更 作废已有企业版试用证书。之后可以通过提交申请获取新的试用证书。 &#x1f384; 改进 改进整体布局和导航。 支持在 SQL 编辑器里显示以及查询 PostgreSQL 数据…

“机器人V2.0时代已来”-任务规划难题迎刃而解,世界因机器人改变而翻转!

01-VILA背景简介 2022年&#xff0c;Michael Ahn, Anthony Brohan等人提出“Do as i can, not as i say: Grounding language in robotic affordances”算法。本文指出虽然大型语言模型可以编码关于世界的丰富语义知识&#xff0c;而这些知识对旨在对用自然语言表达的高级、时…

Vue将File二进制文件转换为base64格式

以下是一个完整的Vue示例代码&#xff0c;其中包含了将File转换为base64的功能&#xff1a; <template><div><!-- 上传文件的input元素 --><input type"file" change"handleFileChange" /><!-- 显示base64格式的文件内容 --&g…

MAC配置环境变量

1、配置 JAVA JDK 1.1、查看 JDK 安装目录 &#xff08;1&#xff09;可以在Android Studio中查看&#xff0c;复制该路径 &#xff08;2&#xff09;也可以在官网下载 Java JDK下载地址 mac中的安装地址是"资源库->Java->JavaVirtualMachines"中 1.2、…

SQLMAP的使用(rails 为例)

1.启动一个项目&#xff0c;例如rails学习的项目&#xff0c;修改config/database.yml&#xff0c; 假设来一个接口&#xfeff; class YourModel::YourController < ApplicationController def test_sqlisql "select * from your_table_name where id " par…

scratch认识图形 2023年12月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

目录 scratch认识图形 一、题目要求 1、准备工作 2、功能实现 二、案例分析

编程性能调优方案

微信公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、字符串与集合性能优化 1.String 对象的实现 在 Java 语言中&#xff0c;Sun 公司的工程师们对 String 对象做了大量的优化&#xff0c;来节…

【机器学习】利用线性回归预测披萨价格

目录 前言 一、绘制散点图 二、数据准备 三、一元线性回归模型训练 四、一元线性回归模型评估 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首…

vue运行项目时network:unavailble的解决方法

先看问题&#xff1a; 解决方法&#xff1a; 1、找到环境变量 2、找到系统变量中的变量Path&#xff1a;点击编辑 3、打开后新建文本 C:\windows\System32\Wbem 复制粘贴即可 3、最后重启vscode运行即可&#xff1a; 错误原因&#xff1a; 因为WBEM是管理协议和网络标准技术…