【问题标题】:/bin/sh: 1: apk: not found, while build image docker/bin/sh: 1: apk: not found, while build image docker
【发布时间】:2021-10-20 11:21:51
【问题描述】:

我正在尝试使用 docker 创建和运行 djanog 映像以将其与 kubernetes 一起部署,但是当我运行映像构建命令时,它会给出错误“/bin/sh: 1: apk: not found "

Dockerfile:

FROM python:3.8-slim
LABEL maintainer="r.ofc@hotmail.com"

ENV PROJECT_ROOT /app
WORKDIR $PROJECT_ROOT

RUN apk update \
    && apk add mariadb-dev \
        gcc\
        python3-dev \
        pango-dev \
        cairo-dev \
        libtool \
        linux-headers \
        musl-dev \
        libffi-dev \
        openssl-dev \
        jpeg-dev \
        zlib-dev
        
RUN pip install --upgrade pip
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .

CMD python manage.py runserver 0.0.0.0:8000

有人可以帮我吗?

【问题讨论】:

  • -slim 图像使用apt AFAIR。
  • 嗨,我在尝试,但不是功能。返回错误:警告:apt 没有稳定的 CLI 界面。在脚本中谨慎使用。 E: 无效操作添加

标签: python django docker dockerfile


【解决方案1】:

python:3.8-slim 基于 Debian,它使用的是 apt 包管理器,而不是 apk。

您可以更改图像版本:

FROM python:3.8-alpine

它应该可以正常工作。

另一种解决方案是保留python:3.8-slim 图像,但切换到apt:

RUN apt update \
    && apt install -y libmariadb-dev \
        gcc\
        python3-dev \
        libcogl-pango-dev \
        libcairo2-dev \
        libtool \
        linux-headers-amd64 \
        musl-dev \
        libffi-dev \
        libssl-dev \
        libjpeg-dev \
        zlib1g-dev

我更新了软件包名称,因为它们在 Debian 中不一样。

【讨论】:

  • 感谢您的帮助,出现错误的包,我会搜索更新的包
  • 没问题,我不知道你有没有看到,但我更新了我的答案,你可以用apk add保留你的初始Dockerfile并将图像版本切换到python:3.8-alpine,它可能是比更改所有软件包以匹配 debian 版本更容易。
  • 真的很简单,发生了一个dns错误,我会检查一下可以是什么
猜你喜欢
  • 2020-12-23
  • 2019-09-11
  • 2015-12-18
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
相关资源
最近更新 更多