社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

Artur Dino • 3 年前 • 1437 次点击  

当我试图

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
 
1437 次点击  
文章 [ 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