如何将Python解释器添加到.Net Core Docker映像?
我在Dockerfile中有一个Dotnet核心基础映像。 我需要在内部使用.Net核心项目中的python解释器调用一些python脚本。 现在,可以有多种选项添加python解释器,如 创建单独的python容器或在当前.net核心映像中安装python,如DockerFile中的以下代码所示:如何将Python解释器添加到.Net Core Docker映像?,python,docker,.net-core,docker-compose,dockerfile,Python,Docker,.net Core,Docker Compose,Dockerfile,我在Dockerfile中有一个Dotnet核心基础映像。 我需要在内部使用.Net核心项目中的python解释器调用一些python脚本。 现在,可以有多种选项添加python解释器,如 创建单独的python容器或在当前.net核心映像中安装python,如DockerFile中的以下代码所示: RUN apt-get install -y python3-pip python3-dev \ && cd /usr/local/bin \ && ln -
RUN apt-get install -y python3-pip python3-dev \
&& cd /usr/local/bin \
&& ln -s /usr/bin/python3 python \
&& pip3 install --upgrade pip
但是,运行上述命令会将图像大小增加400 MB
我拉取了alpine python映像并在另一个容器中运行,它只消耗45MB。
那么,在.NETCore中配置python的最佳方法是什么?
创建单独的python容器是一种更好的方法吗?我如何使用安装在单独容器中的python解释器调用python脚本
附言:我对Docker非常陌生,我不建议在python中使用
alpine
base image,这就是为什么:
你可以在你的ubuntu
容器中额外支付400MB,或者使用debian:slim
base图像,它的重量比ubuntu要轻。如果您为python安装一些额外的libs,它的重量甚至可能比alpine还要轻
最好的方法是在不同的容器中为不同的语言提供不同的运行环境,因此,只需将您的python脚本放在它自己的容器中。为python创建单独的容器不是一个好方法,因为比方说,如果该容器由于某些问题而关闭,那么您将很难执行python脚本 方法1 另一种方法是将python tar文件复制到容器中,在入口点脚本中,可以在指定的位置对其进行解压缩。这也将减小图像大小
运行mkdir-p/python/python/interpreter/python/interpreter/tar
COPY/
/python/tar
tarxv-C/python/interpreter/-f/python/interpreter/tar/
docker run-it--rm--name my script-v“$PWD”:/user/myapp-w/user/src/myapp python:3 python your script.py
方法3
使用阿尔卑斯山基地图片如下
来自alpine:3.7的虚拟图像大小为37MB
`FROM ubuntu:18.04
RUN apt-get update \
&& apt-get install -y --no-install-recommends mysql-client \
&& rm -rf /var/lib/apt/lists/*
This has a virtual image size of 15MB
不建议python使用alpine映像:同意使用alpine会使python docker的构建速度变慢。我只是包括了不同的方法,这就是我建议将此作为最后一种方法的原因。我只需要执行多个简单的pythons脚本。在这种情况下,我可以使用阿尔卑斯山,因为较少的要求,也较少的图像大小?是的,你可以使用它的你。最好使用第1种方法,因为您可以更好地控制它。顺便说一句,在alpine python中安装可能比在debian:slim中更重要,谢谢您的建议。我没有任何python应用程序。我只需要一个python命令行解释器来执行.net核心项目中的一些python脚本,其他什么都不需要。因此,在这种情况下,我希望安装python的大小非常小。因此,在这种情况下,您只需要使用除alpine之外的任何图像