Как собрать Docker Python-контейнер с Ubuntu 18.04 (Bionic)? - PullRequest
0 голосов
/ 10 сентября 2018

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

Сначала я подумал, что мне следует начать с «настоящего» образа докера 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 ]

0 голосов
/ 29 октября 2018

Вот что я должен был сделать, начиная с 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.

0 голосов
/ 10 сентября 2018

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

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

FROM buildpack-deps:buster

...