dockerfile拉取python3.7镜像_进入docker容器中安装python3.7镜像-程序员宅基地

技术标签: python  

docker构建python3.7镜像:https://zhuanlan.zhihu.com/p/137288195

  1. FROM:需要什么环境

    ENV:修改path,即增加/usr/local/bin这个环境变量

    ADD:将本地代码放到虚拟容器中,它有两个参数,第一个是 .
    ,代表本地当前路径;第二个参数是/code,代表虚拟容器中的路径,即将本地项目的所有内容放到虚拟容器的/code目录下,以便在虚拟容器中运行代码

    WORKDIR:指定工作目录,也就是刚才的/code,在虚拟容器中的目录

    RUN:执行某些环境准备工作,docker容器中只有python3环境,还需要python的库,这里安装那些库

    CMD:运行项目的命令行命令

打开python镜像地址
https://hub.docker.com/_/python
在这里插入图片描述

在这里插入图片描述
点击红色部分出现:
在这里插入图片描述

#
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
#
# PLEASE DO NOT EDIT IT DIRECTLY.
#

FROM buildpack-deps:bullseye

# ensure local python is preferred over distribution python
ENV PATH /usr/local/bin:$PATH

# http://bugs.python.org/issue19846
# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK.
ENV LANG C.UTF-8

# runtime dependencies
RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
		libbluetooth-dev \
		tk-dev \
		uuid-dev \
	; \
	rm -rf /var/lib/apt/lists/*

ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
ENV PYTHON_VERSION 3.7.13

RUN set -eux; \
	\
	wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; \
	wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; \
	GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
	gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; \
	gpg --batch --verify python.tar.xz.asc python.tar.xz; \
	command -v gpgconf > /dev/null && gpgconf --kill all || :; \
	rm -rf "$GNUPGHOME" python.tar.xz.asc; \
	mkdir -p /usr/src/python; \
	tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \
	rm python.tar.xz; \
	\
	cd /usr/src/python; \
	gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
	./configure \
		--build="$gnuArch" \
		--enable-loadable-sqlite-extensions \
		--enable-optimizations \
		--enable-option-checking=fatal \
		--enable-shared \
		--with-system-expat \
		--with-system-ffi \
		--without-ensurepip \
	; \
	nproc="$(nproc)"; \
	make -j "$nproc" \
# setting PROFILE_TASK makes "--enable-optimizations" reasonable: https://bugs.python.org/issue36044 / https://github.com/docker-library/python/issues/160#issuecomment-509426916
		PROFILE_TASK='-m test.regrtest --pgo \
			test_array \
			test_base64 \
			test_binascii \
			test_binhex \
			test_binop \
			test_bytes \
			test_c_locale_coercion \
			test_class \
			test_cmath \
			test_codecs \
			test_compile \
			test_complex \
			test_csv \
			test_decimal \
			test_dict \
			test_float \
			test_fstring \
			test_hashlib \
			test_io \
			test_iter \
			test_json \
			test_long \
			test_math \
			test_memoryview \
			test_pickle \
			test_re \
			test_set \
			test_slice \
			test_struct \
			test_threading \
			test_time \
			test_traceback \
			test_unicode \
		' \
	; \
	make install; \
	\
# enable GDB to load debugging data: https://github.com/docker-library/python/pull/701
	bin="$(readlink -ve /usr/local/bin/python3)"; \
	dir="$(dirname "$bin")"; \
	mkdir -p "/usr/share/gdb/auto-load/$dir"; \
	cp -vL Tools/gdb/libpython.py "/usr/share/gdb/auto-load/$bin-gdb.py"; \
	\
	cd /; \
	rm -rf /usr/src/python; \
	\
	find /usr/local -depth \
		\( \
			\( -type d -a \( -name test -o -name tests -o -name idle_test \) \) \
			-o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name '*.a' \) \) \
			-o \( -type f -a -name 'wininst-*.exe' \) \
		\) -exec rm -rf '{}' + \
	; \
	\
	ldconfig; \
	\
	python3 --version

# make some useful symlinks that are expected to exist ("/usr/local/bin/python" and friends)
RUN set -eux; \
	for src in idle3 pydoc3 python3 python3-config; do \
		dst="$(echo "$src" | tr -d 3)"; \
		[ -s "/usr/local/bin/$src" ]; \
		[ ! -e "/usr/local/bin/$dst" ]; \
		ln -svT "/usr/local/bin/$src" "/usr/local/bin/$dst"; \
	done

# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value '<VERSION>'"
ENV PYTHON_PIP_VERSION 22.0.4
# https://github.com/docker-library/python/issues/365
ENV PYTHON_SETUPTOOLS_VERSION 57.5.0
# https://github.com/pypa/get-pip
ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/38e54e5de07c66e875c11a1ebbdb938854625dd8/public/get-pip.py
ENV PYTHON_GET_PIP_SHA256 e235c437e5c7d7524fbce3880ca39b917a73dc565e0c813465b7a7a329bb279a

RUN set -eux; \
	\
	wget -O get-pip.py "$PYTHON_GET_PIP_URL"; \
	echo "$PYTHON_GET_PIP_SHA256 *get-pip.py" | sha256sum -c -; \
	\
	export PYTHONDONTWRITEBYTECODE=1; \
	\
	python get-pip.py \
		--disable-pip-version-check \
		--no-cache-dir \
		--no-compile \
		"pip==$PYTHON_PIP_VERSION" \
		"setuptools==$PYTHON_SETUPTOOLS_VERSION" \
	; \
	rm -f get-pip.py; \
	\
	pip --version

CMD ["python3"]
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/stay_foolish12/article/details/123710558

智能推荐

windows下如何编译带SSL/TLS的wsdl2h_wsdl2h tls-程序员宅基地

文章浏览阅读1k次。gSOAP官方提供的、已编译好的wsdl2h默认是禁用SSL/TLS的,所以不支持HTTPS下载WSDL文件。但就windows下如何编译在网上没找到具体案例。1、安装openssl,可以选择安装包安装(http://slproweb.com/products/Win32OpenSSL.html)2、在vs的项目右键属性,选择C/C++,选中预处理器,加入宏WITH_OPENSSL(启用o..._wsdl2h tls

流程控制总结_java流程控制实验总结-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏4次。//第三课,流程控制 ctrl + shift +o 可以导入从键盘获取输入的资源 //单分支选择结构 if(条件表达式){ 代码块 } //双分支选择结构 if(条件表达式){ 代码块1 } else{ 代码块2 } //多分支选择结构 if(条件表达式1){ 代码块1 } else if(条件表达式2){ 代码块_java流程控制实验总结

使用Python为时间序列预测创建ARIMA模型_model_fit = model.fit(disp=0)-程序员宅基地

文章浏览阅读6.9k次,点赞6次,收藏50次。 如何在Python中为时间序列预测创建ARIMA模型 ARIMA模型是一种流行且广泛使用的时间序列预测统计方法。ARIMA是AutoRegressive Integrated Moving Average的缩写。它是一类模型,它捕获时间序列数据中的一套不同的标准时间结构。 ARIMA模型的信息还可以参考这里 ..._model_fit = model.fit(disp=0)

靶机渗透测试实战(七)——FristiLeaks渗透实战-程序员宅基地

文章浏览阅读3.3k次,点赞6次,收藏19次。目录一. 实验环境二. 实验流程三. 实验步骤(一)信息收集——主机发现1. 查看Kali的IP信息;(IP:192.168.37.131)2. 查看靶机页面,IP地址为:192.168.37.146;3. 扫描主机(netdiscover)(二)信息收集——端口扫描1. 扫描端口(masscan)2. 详细扫描端口信息(nmap)(三)渗透测试80..._fristileaks

ROS学习(1)简介和文件系统-程序员宅基地

文章浏览阅读151次。目录1.ROS简介1.1机器人时代的到来中国大学MOOC—《机器人操作系统入门》配套讲义1.ROS简介机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。 因此自ROS诞生以来,受到了学术界和工业界的欢迎,如今已经广泛应用于机械臂、移动底盘、无人机、无人车等许多种类的机器人上。1.1机器人时代的到来...

【SVM时序预测】基于支持向量机的时间序列预测(libsvm)附matlab代码_支持向量机 时间序列-程序员宅基地

文章浏览阅读452次。在现代数据科学和机器学习领域中,时间序列预测是一个非常重要的问题。时间序列预测可以用于许多应用,例如股票价格预测、天气预测、交通流量预测等。支持向量机(SVM)是一种广泛使用的机器学习算法,可以用于时间序列预测。本文将介绍基于支持向量机的时间序列预测算法步骤。数据预处理在进行时间序列预测之前,需要对数据进行预处理。这包括数据清洗、数据平滑、数据归一化等。数据清洗可以去除异常值、缺失值等。数据平滑可以减小数据的噪声,使数据更加平滑。数据归一化可以将数据缩放到相同的范围内,以便更好地进行比较和分析。_支持向量机 时间序列

随便推点

用Python实现 学生信息管理系统_信息管理系统pyqt6-程序员宅基地

文章浏览阅读6k次,点赞22次,收藏109次。项目要求:读完题目,首先我们要确定程序思路我们要全部通过类去实现也就是 我们要实现管理员、学生、讲师、课程、教师五个类管理员类class Administration(object): def __init__(self): self.data = self.__load() self.login_data = {} def __load(self) -> list: try: Adm = open(_信息管理系统pyqt6

python3 爬虫 零基础快速上手(爬虫示例)-程序员宅基地

文章浏览阅读3.9w次,点赞32次,收藏220次。(补1:由于csdn页面重构了,看到有很多人浏览,特地更新一下获取内容补充的字都为绿字)Python是一种面向对象的解释型计算机程序设计语言,类似c,java ,php,JavaScript一种语言,比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。Python是一种高级的语言。一:python 安装:首先,根据你的Windows版本(..._python3 爬虫

用 Python解析HTML页面_python解析html用哪个模块-程序员宅基地

文章浏览阅读1.4k次。本文介绍了 Python 中常用的三种 HTML 解析方式:XPath 解析、CSS 选择器解析和正则表达式解析。在具体的应用过程中,我们可以根据需要选择不同的解析方式。XPath 解析适用于对 HTML 页面的层次结构进行解析,能够比较方便地定位页面元素;CSS 选择器解析适用于对 HTML 页面的类名、id 等属性进行解析,可以快速定位元素;正则表达式解析适用于对 HTML 页面的标签和文本进行解析,可以灵活地处理页面元素。希望本文能够对大家进行 HTML 解析方面的学习和实践有所帮助。_python解析html用哪个模块

使用CDN的方式使用Vue 和 iview构建vue项目_cdn方式 vue怎么封装组件-程序员宅基地

文章浏览阅读1w次,点赞7次,收藏19次。使用CDN的方式使用Vue 和 iview构建vue项目一、CDN的方式是什么二、为什么采用cdn的方式三、过程1 引入vue.js和iview。2 基本功能3 组件功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaT......_cdn方式 vue怎么封装组件

程序员写春联,秒杀全场!网友:不愧是聪明绝顶的“程序猿”!_years months weeks day day no bug java python c++ -程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏4次。转眼间,春节就要过完了,回想起春节即将来临之前,每家每户都贴起了对联,很多机构、公司、学校也贴出了具有代表性的春联。有些春联让人看了,可谓是惊叹连连、啧啧称奇。那当然身为程序员的一家,也不能输了气势,谁说程序员只会敲代码,程序员敲起代码来也是秒杀全场,网友连连夸赞:不愧是聪明绝顶的”程序猿“!很明显,这是一副程序员写的春联。上联:Python Java C++ Line Line So..._years months weeks day day no bug java python c++ line line so easy

谷歌chrome运行activeX控件_ie_tab_multi_extension-程序员宅基地

文章浏览阅读1.5w次,点赞3次,收藏9次。在谷歌chrome浏览器下,安装IE_Tab_Multi_extension_1_0_0_1控件即可具体操作:将IE_Tab_Multi_extension_1_0_0_1 拖入谷歌浏览器然后点击:添加即可谷歌浏览器不能直接用activeX原因:因为Activex是由微软开发,因而目前只支持原生态支持的IE,最新版Edge已经不再支持了。其他浏览器想要支持activex, 需要额外做一些设置或安装补丁包,其中谷歌浏览器的话,需要安装 IE-Tab-Multi控件IE_Tab_Multi_exte_ie_tab_multi_extension