Py学习  »  docker

如何在docker图像创建过程中回显号码?[重复]

Artur Dino • 3 年前 • 1446 次点击  

当我试图

apt-get install -y tzdata

此时将显示用于拾取时区的命令行选项。我试图在脚本中使用它来进行一些设置,如何在没有用户输入的情况下运行apt?

我知道我可以重新配置tzdata

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

但当安装时,我需要它完全运行,即使它没有设置正确的时区,我总是可以重新配置它。

我试过了

echo 5 | apt-get install -y tzdata

但它并没有像预期的那样发挥作用。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128010
 
1446 次点击  
文章 [ 7 ]  |  最新文章 3 年前
grantr
Reply   •   1 楼
grantr    4 年前

以下是对我有效的方法:

from ubuntu:bionic
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y tzdata

RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
Mike Maready
Reply   •   2 楼
Mike Maready    5 年前

我是这样做的:

echo 1 > input.txt
echo 1 >> input.txt
apt-get install -y tzdata < input.txt
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
echo America/Los_Angeles > /etc/timezone

前两个echo语句创建一个文本文件,其中包含地理区域菜单和城市/地区菜单的选择编号。然后,该文件用于向apt get install命令提供输入。tzdata软件包将在不要求任何用户输入的情况下安装。时区将设置为非洲/阿比让,就好像您输入1和1是为了响应通常会收到的提示一样。然后我用最后两个命令将时区更改为我想要的。

你可以使用你想要的地理区域和城市/地区的实际数字,而不是1和1,但在我看来,这些数字可能会改变。

Pascal H.
Reply   •   3 楼
Pascal H.    4 年前

为了避免直接使用符号链接,并且只运行一次配置,我建议使用 debconf-set-selections 命令:

echo 'tzdata tzdata/Areas select Europe' | debconf-set-selections
echo 'tzdata tzdata/Zones/Europe select Paris' | debconf-set-selections
DEBIAN_FRONTEND="noninteractive" apt install -y tzdata
jpruiz114
Reply   •   4 楼
jpruiz114    6 年前

这一切都应该归功于@PYA,但正确的顺序应该是:

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
export DEBIAN_FRONTEND=noninteractive
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata
Patrick
Reply   •   5 楼
Patrick    4 年前

我最近在一个Dockerfile建筑中找到了以下解决方案 Cingulata 图书馆:

ln -snf /usr/share/zoneinfo/$(curl https://ipapi.co/timezone) /etc/localtime

它基本上使用ipapi提供的API。co检索时区信息。这会自动正确配置时区,而不是跳过对话框并使用默认值(UTC)。

Youngjae
Reply   •   6 楼
Youngjae    5 年前

如果有人想在 Dockerfile ,使用方法如下。

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata
Tarion PYA
Reply   •   7 楼
Tarion PYA    4 年前

这是我使用的脚本

(更新版本,来自@elquimista的评论)

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata

看起来效果不错。

作为一个班轮:

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata