/bin/sh: 1: apk: не найден, во время настройки сборки образа

#python #django #docker #dockerfile

Вопрос:

Я пытаюсь создать и запустить образ djanog с помощью docker, чтобы развернуть его вместе с kubernetes, но когда я запускаю команду сборки образа, она выдает ошибку «/bin/sh: 1: apk: не найден».

Докерфайл:

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

ENV PROJECT_ROOT /app
WORKDIR $PROJECT_ROOT

RUN apk update 
    amp;amp; 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
 

кто-нибудь может мне помочь?

Комментарии:

1. -slim Изображения используют apt AFAIR.

2. Привет, я пытаюсь, но не могу. возвращаемая ошибка: ПРЕДУПРЕЖДЕНИЕ: apt не имеет стабильного интерфейса командной строки. Используйте с осторожностью в сценариях. E: Недопустимая операция добавить

Ответ №1:

Он python:3.8-slim основан на Debian, который использует менеджер пакетов apt, а не apk.

Вы можете изменить версию изображения:

 FROM python:3.8-alpine
 

и это должно работать нормально.

Другое решение-сохранить python:3.8-slim изображение, но переключиться на apt:

 RUN apt update 
    amp;amp; 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.

Комментарии:

1. спасибо вам за вашу помощь, появились пакеты, которые находятся в ошибке, я буду искать обновленные пакеты

2. Нет проблем, я не знаю, видели ли вы это , но я обновил свой ответ, вы можете просто сохранить свой исходный файл Dockerfile apk add и переключить версию образа на python:3.8-alpine , это может быть проще, чем изменить все пакеты в соответствии с версией debian.

3. и действительно, если произошла ошибка dns, я проверю, что может быть