我有一个docker-compose文件运行一些Dockerfiles来创建我的容器。我不想编辑我的Dockerfiles来设置时区,因为它们可以随时由我的团队成员进行更改,并且我有一个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语法中复制相同的命令?
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)。
最简单的解决方案是在docker-compose.yml中共享卷,就像这样
ipchanger:
image: codertarasvaskiv/ipchanger:raspberry
volumes:
- "/etc/localtime:/etc/localtime:ro"
- ro - 表示容器只能从主机的/ etc / localtime读取。