使用 docker-compose 设置容器时区

新手上路,请多包涵

我有一个运行几个 Dockerfile 的 docker-compose 文件来创建我的容器。我不想编辑我的 Dockerfile 来设置时区,因为我的团队成员可以随时更改它们,而且我有一个 docker-compose.override.yml 文件来更改本地环境。但是,我的一个容器(基于 Selenium 的容器)似乎没有拉主机时区,这给我带来了问题。基于此,我想在我的所有容器上强制执行时区。我现在在我的 Dockerfiles 中

ENV TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

一切正常。如何在 docker-compose 语法中复制相同的命令?

原文由 nobody 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.9k
2 个回答
version "2"

services:
  serviceA:
    ...
    environment:
      TZ: "America/Denver"
    command: >
      sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&
      echo $TZ > /etc/timezone &&
      exec my-main-application"

编辑:这个问题没有要求,但我刚刚添加了 exec my-main-application 以显示如何指定主进程。 exec 在这里很重要,以确保 my-main-application 接收 Ctrl-C (SIGINT/SIGKILL)。

原文由 Bernard 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是一个简单的解决方案:

 environment:
  - TZ=America/Denver

原文由 MxWild 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题