bash - 强制在Docker镜像中更改时区

标签 bash docker timezone dockerfile gitlab-ci

从gitlab ci管道中,我正在使用Dockerfile创建Docker镜像。我需要将docker镜像中的时区从UTC更改为CST。我已经尝试了几种方法(下面列出),但是我无法改变它。希望有人能指出我正确的方向。

Linux版本:

OS name: "linux", version: "4.15.0-72-generic", arch: "amd64", family: "unix"

从Dockerfile中:
RUN sudo echo "America/Chicago" > /etc/timezone

没用通过前后调用date命令,时区保持不变。

然后:
ENV TZ=America/Chicago
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

没用

从gitlab-ci文件中:
timedatectl
Failed to create bus connection: No such file or directory

我读到我需要安装dbus ..所以我把它放在Dockerfile中
apt-get install dbus
apt-get: command not found

所以我认为图像可能是基于Alpine的。
apk add --update dbus
timedatectl
Failed to create bus connection: No such file or directory

所以,我很茫然。这很新,不知道还要做什么。

我在期待什么。

当我在此图像中运行的单元测试执行日期功能时,它们不拉UTC,而是拉我设置的新更新的时区。

有什么建议么?

最佳答案

我相信您需要安装软件包tzdata。在Dockerfile中使用类似下面的内容:

# Install tzdata
RUN apk add --no-cache tzdata

然后,您应该可以使用环境变量设置时区:
TZ: America/Chicago

关于bash - 强制在Docker镜像中更改时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59791190/

相关文章:

database - postgres脚本遇到语法错误: unexpected end of file

json - 如何从可执行 bash 脚本中的 curl 获得正确响应?

asp.net - 我可以在 docker 容器中运行托管在 IIS 上的 dotnet 应用程序吗?

c# - 使用 C# 在远程计算机上设置日期、时间和时区

javascript - 如何将 Moment.js 日期转换为用户本地时区?

java - Scala 时区问题

reactjs - 当我在 Ubuntu 中输入任何东西时,它会返回/usr/bin/env : ‘bash\r’ : No such file or directory

linux - 从 awk 中排除列

docker - 无法删除任何K8s资源

docker - 带有卷的 Arangodb、Foxx 和 Docker