Como definir localtime / timezone da maneira mais genérica e independente de distrações?

3

Eu criei um contêiner docker, que está sendo executado no fuso horário errado. Eu pessoalmente preciso que ele funcione no meu fuso horário (Europa / Estocolmo, GMT + 1). Como o projeto é de código aberto, outros usuários também podem querer mudar isso. Desejo tornar mais fácil para qualquer um mudar isso, por exemplo, o Dockerfile ou no docker-compose.yml.

Se possível, também desejo que a solução seja aplicável não apenas no CentOS caso alguém deseje usar uma distro diferente.

Qual é a abordagem mais independente de distro para definir o horário local / fuso horário no meu contêiner docker?

Essas duas abordagens parecem ser comuns, mas não tenho certeza se elas são realmente o melhor caminho a seguir:

Variável de ambiente TZ

Algumas distribuições Linux lêem a variável de ambiente TZ. No entanto, estou percebendo que não funciona quando uso a imagem centos:7 .

/ etc / localtime

Você pode mapear /etc/localtime para /etc/localtime no host no docker-compose.yml do contêiner. Mas, ao fazer isso, as distribuições que usam /etc/timezone são deixadas no UTC e o software que pode estar lendo, lerá o fuso horário errado.

    
por fredrik 16.05.2016 / 13:25

1 resposta

2

Distro-agnóstico exigiria um script que detecta qual distro está sendo usada. Isso ocorre porque cada "família" de distribuição tem uma maneira diferente de observar fusos horários. Para alguns, adicionar o seguinte ao Dockerfile pode funcionar:

RUN echo "Europa / Estocolmo" > / etc / timezone

Outro (por exemplo, Debian) requer o uso do acima e depois o uso de outro comando Dockerfile como:

EXECUTAR EXECUTAR sudo dpkg-reconfigure -f tzdata não-interativa

Outras distros (IIRC, incluindo o CentOS) exigiriam algo como:

EXECUTAR ln -s / usr / share / zoneinfo / Europa / Stockhom / etc / localtime

Tornar isso independente de distro exigiria a pesquisa do método de cada distro para reconfigurar o fuso horário. Se você olhar em / etc / localtime, notará que não é um arquivo de texto.

    
por 09.09.2016 / 04:29