代码之家  ›  专栏  ›  技术社区  ›  Chris

如何用Ubuntu 18.04(仿生)构建Docker python容器?

  •  1
  • Chris  · 技术社区  · 7 年前

    python提供docker映像( https://hub.docker.com/ /python/ ,有多种口味(基于不同的图像: https://hub.docker.com//buildpack-deps/ )不幸的是,没有Ubuntu18.04(仿生)作为基础。我想做那个。

    我最初认为我应该从一个“真实”的Ubuntu18.04 Docker形象开始。( https://hub.docker.com/r/library/ubuntu/ )并安装相关的Ubuntu软件包,但是生成的Docker映像看起来很快就会变大,当然也不会拉入当前的Python版本(3.7.0)。

    接下来,我尝试简单地构建Docker Hub上提供的确切DockerFile。( 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:用原版构建Docker图像 从buildback deps:拉伸 似乎工作得很好,所以这个交互式选择与仿生基础有关。

    2 回复  |  直到 6 年前
        1
  •  1
  •   kamion    6 年前

    这是我必须做的事情 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
    

    我还需要添加 --no-check-certificate 所有选项 wget 电话。

        2
  •  0
  •   Chris    7 年前

    简而言之:不要这样做。

    我不知道Ubuntu(18.04)Bionic不再是基于Debian的 stretch ,但现在实际上是基于Debian buster . 所以,我不想在Ubuntu上构建它,我也可以在Ubuntu上构建它。 巴斯特 简单使用:

    FROM buildpack-deps:buster