【问题标题】:Docker build stops on software-properties-common when run with `apt update`使用 apt update 运行时,Docker 构建在 software-properties-common 上停止
【发布时间】:2022-01-15 06:49:20
【问题描述】:

我有 2 个 dockerfile:

FROM ubuntu:20.04
RUN apt-get update && apt-get install -y \
    software-properties-common \
    python3
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN apt-get update && apt-get install -y \
    python3

问题是:当我运行第一个(使用docker build)时,构建过程会挂起:

software-properties-common 包询问我地理区域 - 我无法提供任何输入,我想在构建图像时不允许这样做。

但是,当我构建第二个 dockerfile 时,并没有出现这个问题。我很好奇 - 为什么会这样?

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    在您的 Dockerfile 中添加以下行并再次构建。

    RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
    

    【讨论】:

    • 好的,但是为什么第二个 dockerfile 可以正常工作,没有那个环境 DEBIAN_FRONTEND
    • 顺便说一句,你的意思是我应该安装那个确切的包“tzdata”还是只是一个如何设置DEBIAN_FRONTED的例子,我实际上应该忽略“tzdata”?
    • @Loreno 我尝试使用您提供的两个 Dockerfile 构建映像,但我无法重现该错误。我的构建在这两个方面都很成功。在您的情况下,使用第二个 Dockerfile 的构建可能由于之前构建的层而正常工作。
    • 我包含了包 tzdata,因为您的 docker build 在配置时区(tzdata)时停止。没有它你也可以工作。
    • 我使用了RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y software-properties-common python3,不幸的是这并没有帮助。我仍然被要求提供地理位置
    【解决方案2】:

    我发现正在运行

    ln -fs /usr/share/zoneinfo/UTC /etc/localtime
    

    在设置 DEBIAN_FRONTEND=noninteractive 之前为我工作。 (您希望将 zoneinfo 之后的位替换为适用于您的任何内容。)

    如果您需要动态设置,[this answer] (https://stackoverflow.com/a/63153978/1995015) 建议调用可以提供该设置的网站。

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 2021-10-23
      • 2017-04-29
      • 1970-01-01
      相关资源
      最近更新 更多