建房 docker build -t dbtest . 跑 docker run -it dbtest -c "date" 现在您可以通过运行以下命令在数据库端进行验证 show timezone; 您将在容器和postgres中看到Central Africa Time 在阿尔卑斯山基本图像中,环境变量将不起作用。你将需要运行
RUN ls /usr/share/zoneinfo && \
cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime && \
echo "Africa/Lusaka" > /etc/timezone && \
8条答案
按热度按时间zyfwsgd61#
您可以在运行阶段按照@LinPy的建议进行覆盖,但如果您希望在Dockerfile中进行设置,则可以使用ENV进行设置,因为tzdata已经存在于基本映像中。
建房
docker build -t dbtest .
跑
docker run -it dbtest -c "date"
现在您可以通过运行以下命令在数据库端进行验证
show timezone;
您将在容器和postgres中看到
Central Africa Time
在阿尔卑斯山基本图像中,环境变量将不起作用。你将需要运行
wqlqzqxt2#
有几种方法可以做到这一点。
1.您可以在docker合成文件中直接将时区声明为环境变量
1.您可以在docker组成文件中Map容器的时区和本地时间文件以使用主机的时区和本地时间文件
我个人更喜欢使用第二种方法,通过这种方式,我的所有容器都将具有与我的主机相同的时间配置
5vf7fwbs3#
只需在/usr/share/zoneinfo目录中将/etc/localtime更改为时区即可。
请执行以下步骤:
首先登录您容器的bash:
然后删除符号链接文件(/etc/localtime):
确定您要配置的时区并为其创建符号链接:
例如,我想设置亚洲/德黑兰时区:
现在通过以下方式进行验证:
并且输出将是您的时区:
eqqqjvef4#
最好的方法是在你的跑步阶段使用
ENV
并确保包
tzdata
存在于Container
中yqlxgs2m5#
更简单的方法是将env var添加到您的部署中:
(Kubernetes部署YAML)
s4chpxco6#
如果
TZ
环境设置正确,但时间仍然错误,请确保安装了tzdata
系统依赖项。zlhcx6iw7#
这个问题是关于Postgres基地的,我的问题是关于阿尔卑斯山基地的,但基于阿尔卑斯山维基,我能收集到的最佳实践意味着我的Dockerfile如下所示:
Https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts#setup-timezone
a7qyws3x8#
使用
显示所有分区的步骤