Я полагаю, что apt
ожидает ввода данных пользователем, чтобы подтвердить обновление. Строитель Docker не может справиться с этими интерактивными диалогами без хакерских решений. Таким образом, это не удается.
Самое простое решение - добавить флаг -y
к вашим командам, как вы делаете это в команде установки.
FROM python:3.6-buster
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
RUN echo $TZ > /etc/timezone
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get -y install gcc musl-dev libffi-dev
COPY requirements.txt requirements.txt
RUN python3 -m pip install -r requirements.txt
COPY . /application
WORKDIR /application
EXPOSE 7000
Однако ... вам действительно нужно обновить ваши существующие пакеты? Это может быть не требуется в вашем случае. Кроме того, я могу порекомендовать вам проверить Docker Best Practices для написания операторов, включающих apt
команды. Для того чтобы размер вашего изображения был небольшим, вы должны рассмотреть возможность сжатия этих команд в одном операторе RUN. Кроме того, вы должны впоследствии удалить кэш apt, чтобы минимизировать изменения между вашими двумя слоями:
FROM python:3.6-buster
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
RUN echo $TZ > /etc/timezone
RUN apt-get update \
&& apt-get -y install gcc musl-dev libffi-dev \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt requirements.txt
RUN python3 -m pip install -r requirements.txt
COPY . /application
WORKDIR /application
EXPOSE 7000