Python 提供了 docker 镜像 (https://hub.docker.com//python/(,它们有多种风格(基于来自 https://hub.docker.com//buildpack-deps/的不同镜像(。不幸的是,没有一个提供 ubuntu 18.04(仿生(作为基础。我想建造它。
我最初认为我应该从一个"真正的"ubuntu 18.04 docker 镜像 (https://hub.docker.com/r/library/ubuntu/( 开始并安装相关的 ubuntu 包,但生成的 docker 镜像似乎很快就会变得非常大,当然不会拉入当前的 python 版本(3.7.0(。
接下来,我尝试简单地构建 docker 集线器 (https://github.com/docker-library/python/blob/8601079d1f70b03c01408377716a3243ce75cec9/3.7/stretch/Dockerfile( 上提供的确切 Dockerfile,但将FROM buildpack-deps:stretch
替换为FROM buildpack-deps:bionic
。不幸的是,该构建似乎需要对我的区域进行某种交互式选择,但我看不出如何解决这个问题(下面的输出(。
关于如何预配置此构建以便它不要求我提供区域/如何禁用该提示的任何建议?
我看到了使用expect
的建议,但不知道这是否可以轻松集成到 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
构建 docker 镜像似乎工作正常,所以这个交互式选择与仿生基础有关。
以下是我从 Ubuntu Stretch 开始必须做的事情,我改变了:
FROM ubuntu
为了传递 tzdata 提示符,请在 apt-get 行之前插入环境变量(编辑使用 ARG 而不是 ENV,使其仅适用于 docker 构建,而不是在容器运行时(:
ARG DEBIAN_FRONTEND=noninteractive
然后你需要适当地获取所有这些包:
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
我还需要在所有wget
调用中添加--no-check-certificate
选项。
简而言之:不要这样做。
我不知道 Ubuntu (18.04( 仿生不再基于 Debianstretch
,而是现在实际上基于 Debianbuster
。因此,与其尝试在 ubuntu 之上构建它,我还可以在buster
之上构建它并简单地使用:
FROM buildpack-deps:buster