Как собрать Docker Python-контейнер с Ubuntu 18.04 (Bionic)?

Python предоставляет образы докеров ( https://hub.docker.com/_/python/), которые бывают разных видов (на основе разных изображений из: https://hub.docker.com/_/buildpack-deps/), К сожалению, ни один не предоставляется с Ubuntu 18.04 (бионический) в качестве базы. Я хотел бы построить это.

Сначала я подумал, что мне следует начать с "настоящего" образа докера ubuntu 18.04 ( https://hub.docker.com/r/library/ubuntu/) и установить соответствующие пакеты ubuntu, но в результате получается образ докера довольно быстро и, конечно, не работает в текущей версии Python (3.7.0).

Затем я попытался просто создать точный файл Docker, предоставленный на концентраторе докеров ( https://github.com/docker-library/python/blob/8601079d1f70b03c01408377716a3243ce75cec9/3.7/stretch/Dockerfile), но заменитьFROM buildpack-deps:stretchсFROM buildpack-deps:bionic, К сожалению, сборка, кажется, требует своего рода интерактивного выбора моего региона, и я не вижу, как я могу обойти это (вывод ниже).

Любые предложения о том, как предварительно настроить эту сборку, чтобы она не спрашивала меня о регионе / как отключить это приглашение?

Я видел предложения, используяexpect, но не знаю, может ли это быть легко интегрировано в сборку Docker.

Вывод сборки Docker

[...]
Setting up tzdata (2018d-1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
  2. America     5. Arctic     8. Europe    11. SystemV
  3. Antarctica  6. Asia       9. Indian    12. US
Geographic area:

PS: создание образа докера с оригиналом FROM buildpack-deps:stretch кажется, работает нормально, поэтому этот интерактивный выбор связан с бионической основой.

2 ответа

Решение

Короче: не делай этого.

Я не знал, что Ubuntu (18.04) бионический больше не был основан на Debian stretch, но теперь фактически основан на Debian buster, Так что вместо того, чтобы пытаться построить это поверх Ubuntu, я также могу просто построить его поверх buster и просто используйте:

FROM buildpack-deps:buster

Вот что я должен был сделать, начиная с Ubuntu Stretch, я изменил:

FROM ubuntu

Чтобы получить приглашение tzdata, вставьте переменную окружения перед строкой apt-get (отредактируйте использование ARG вместо ENV, чтобы оно применялось только к сборке Docker, а не при работе контейнера):

ARG DEBIAN_FRONTEND=noninteractive

Затем вам нужно apt-get все эти пакеты:

RUN apt-get update && apt-get install -y --no-install-recommends \
wget gpg dirmngr gpg-agent build-essential checkinstall tk-dev \
libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev \
libgdbm-dev libc6-dev libbz2-dev

Мне также нужно было добавить --no-check-certificate вариант во всех wget звонки.

Другие вопросы по тегам