【问题标题】:How to add Python interpreter to a .Net Core Docker image?如何将 Python 解释器添加到 .Net Core Docker 映像?
【发布时间】:2020-10-17 07:25:05
【问题描述】:

我在 Dockerfile 中有一个 Dotnet 核心基础映像。 我需要在内部使用 .Net Core Project 中的 python 解释器调用一些 python 脚本。 现在,可以有多个选项来添加 python 解释器,比如 创建一个单独的 python 容器或将 python 安装在当前的 .net 核心映像中,如 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 映像并在不同的容器中运行它,它仅消耗 45 MB。 那么,在 .Net 核心中配置 python 的最佳方法是什么? 创建一个单独的 python 容器是不是更好的方法,以及如何使用安装在单独容器中的 python 解释器调用 python 脚本?

P.S:我对 Docker 很陌生

【问题讨论】:

    标签: python docker .net-core docker-compose dockerfile


    【解决方案1】:

    好吧,我不建议为 python 使用alpine 基本图像,这就是为什么:https://pythonspeed.com/articles/alpine-docker-python/

    您可以在 ubuntu 容器中额外支付 400MB 或使用 debian:slim 基础镜像,它的重量会比 ubuntu 轻。如果你要为 python 安装一些额外的库,它甚至可能比 alpine 更轻

    最好的方法是在不同的容器中为不同的语言提供不同的运行环境,所以只需将你的 python 脚本放入它自己的容器中。

    【讨论】:

    • 感谢您的建议。我没有任何 python 应用程序。我只需要一个 python 命令行解释器来执行 .net 核心项目中的几个 python 脚本,仅此而已。因此,在这种情况下,我希望以非常小的尺寸安装 python。
    • 所以在这种情况下,您只需要使用除 alpine 之外的任何图像
    【解决方案2】:

    为 python 创建一个单独的容器不是一个好方法,因为例如,如果该容器由于某些问题而关闭,那么你将很难执行你的 python 脚本。

    方法 1

    您可以做的另一种方法是将python tar文件复制到容器中,然后在入口点脚本中,您可以在指定位置解压它。这也会减小图像大小。

    1. 创建目录

      RUN mkdir -p /python /python/interpreter /python/interpreter/tar

    2. 将 tar 文件复制到该路径

      COPY <workspace>/<tar file name> /python/tar

    3. 入口点脚本中的解压缩命令

      tar xv -C /python/interpreter/ -f /python/interpreter/tar/<tar file name>

    方法 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

    使用像下面这样的高山基础图像

    FROM alpine:3.7 -- this has a virtual image size of 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:pythonspeed.com/articles/alpine-docker-python
    • 同意使用 alpine 会使 python docker 构建速度变慢。我只是包含了不同的方法,这就是我建议将其作为最后一种方法的原因。
    • 我只需要执行多个简单的pythons脚本。在那种情况下,我可以使用 alpine,因为它的要求和图像尺寸都比较小?
    • 是的,您可以使用它,这取决于您。最好采用第一种方法,因为您可以更好地控制它。
    • 顺便说一下,alpine python 安装比debian:slim更重
    猜你喜欢
    • 2020-01-31
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2020-01-21
    • 2015-12-22
    相关资源
    最近更新 更多