在不使用 python 图像作为基础的情况下在 Dockerfile 中安装 python

Installing python in Dockerfile without using python image as base

我有一个 python 脚本,它使用我想要容器化的 DigitalOcean 工具(doctl 和 kubectl)。这意味着我的容器需要安装 python、doctl 和 kubectl。问题是,我想出了如何在 dockerfile 中同时安装 python 和 DigitalOcean 工具。

我可以使用基本映像“python:3”安装 python,我还可以使用基本映像“alpine/doctl”安装 DigitalOcean 工具。但是,规则是您只能在 dockerfile 中使用一个基础镜像。

所以我可以包含 python 基本映像并以另一种方式安装 DigitalOcean 工具:

FROM python:3
RUN <somehow install doctl and kubectl>
RUN pip install firebase-admin
COPY script.py
CMD ["python", "script.py"]

或者我可以包含 alpine/doctl 基本映像并以其他方式安装 python3。

FROM alpine/doctl
RUN <somehow install python>
RUN pip install firebase-admin
COPY script.py
CMD ["python", "script.py"]

不幸的是,我不确定该怎么做。如果能帮助我安装所有这些工具,那就太好了!

只需将此与您想要的任何其他内容一起添加即可 apt-get install:

RUN apt-get update && apt-get install -y \
    python3.6 &&\
    python3-pip &&\

在高山中应该是这样的:

RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python &&\
    python3 -m ensurepip &&\
    pip3 install --no-cache --upgrade pip setuptools &&\

这个 Dockerfile 对我有用:

FROM alpine/doctl
ENV PYTHONUNBUFFERED=1
RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
RUN python3 -m ensurepip
RUN pip3 install --no-cache --upgrade pip setuptools

这个答案来自这里:( 我没有足够的街头信誉来发表评论)

您可以尝试如下所示的多阶段构建。

还要检查您的复制语句,您需要定义要将 script.py 文件复制到的位置作为第二个参数。 "." 将其复制到根目录

FROM alpine/doctl
FROM python:3.6-slim-buster
ENV PYTHONUNBUFFERED 1
RUN pip install firebase-admin
COPY script.py .
CMD ["python", "script.py"]