【问题标题】:Dockerfile: /bin/sh: 1: apt-get: not foundDockerfile:/bin/sh:1:apt-get:未找到
【发布时间】:2022-01-18 22:14:48
【问题描述】:

构建 Docker 文件时出现错误

"/bin/sh: 1: apt-get: not found"

码头文件:

FROM python:3.8
FROM ubuntu:20.04
ENV PATH="/env/bin/activate"
RUN apt-get update -y && apt-get upgrade -y

WORKDIR /var/www/html/
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000

CMD ["python", "manage.py"]

【问题讨论】:

    标签: python dockerfile


    【解决方案1】:
    1. 您将PATH 设置为/env/bin/activate,这是搜索apt-get 的唯一位置。无需在容器内激活虚拟环境,只需摆脱该行即可。 pip 可以毫无问题地将requirements.txt 中的包安装到“系统”Python。

    2. 您不能像您尝试做的那样使用多个 FROM 语句对第 2 层图像进行分层。只需使用 FROM python:3.8 并删除 ubuntu。多个FROM 语句用于多阶段构建,其中您有中间图像,这些中间图像会产生复制到最终图像的伪影。

    那就这样吧:

    FROM python:3.8
    RUN apt-get update -y && apt-get upgrade -y
    WORKDIR /var/www/html/
    COPY . .
    RUN pip install -r requirements.txt
    EXPOSE 8000
    CMD ["python", "manage.py"]
    

    .. 虽然你为什么要将 Python 代码放在 /var/www/html 中,但我却不以为然。可能你没有。

    【讨论】:

    • 非常感谢您的回答。我刚开始教 docker,所以我不明白该参考什么,YouTube 上的视频也没有提供任何信息。我把这个文件放在那里是因为我想在 nginx web 服务器上运行 python (django)。虽然我不知道它是否会起作用或是否可能。如果你能回答这个问题,我将不胜感激。
    • 在 Docker 中设置 Django + nginx 远远超出了问题的范围。在容器模式中,您希望在单独的容器中运行 Django、nginx 和您的数据库。例如:testdriven.io/blog/…
    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 2017-02-10
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多