如何将Python解释器添加到.Net Core Docker映像?

如何将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 -

我在Dockerfile中有一个Dotnet核心基础映像。 我需要在内部使用.Net核心项目中的python解释器调用一些python脚本。 现在,可以有多种选项添加python解释器,如 创建单独的python容器或在当前.net核心映像中安装python,如DockerFile中的以下代码所示:

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

  • 将tar文件复制到该路径

    COPY/
    /python/tar

  • 在入口点脚本中使用Untar命令

    tarxv-C/python/interpreter/-f/python/interpreter/tar/

  • 方法2

    您可以直接使用python docker映像运行python脚本:

    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之外的任何图像