
Criei um contêiner docker, que está sendo executado no fuso horário errado. Pessoalmente, preciso que ele seja executado 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 pessoa alterar isso, por exemplo, no 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 queira usar uma distro diferente.
Qual é a abordagem mais independente de distribuição para definir o horário local/fuso horário em meu contêiner docker?
Essas duas abordagens parecem comuns, mas não tenho certeza se são realmente o melhor caminho a seguir para mim:
Variável de ambiente TZ
Algumas distribuições Linux leem a variável de ambiente TZ. No entanto, estou percebendo que não funciona quando uso a centos:7
imagem.
/etc/hora local
Você pode mapear o contêiner /etc/localtime
no /etc/localtime
host em docker-compose.yml. Mas ao fazer isso, as distros usadas /etc/timezone
são deixadas no UTC e o software que pode estar lendo lerá o fuso horário errado.
Responder1
A distribuição independente exigiria um script que detectasse qual distribuição está sendo usada. Isso ocorre porque cada “família” de distribuição tem uma maneira diferente de observar os fusos horários. Para alguns, adicionar o seguinte ao Dockerfile pode funcionar:
EXECUTAR echo "Europa/Estocolmo" > /etc/fuso horário
Outros (por exemplo, Debian) requerem o uso acima e depois outro comando Dockerfile como:
EXECUTAR EXECUTAR sudo dpkg-reconfigure -f tzdata não interativo
Outras distros (IIRC, incluindo CentOS) exigiriam algo como:
EXECUTAR ln -s /usr/share/zoneinfo/Europe/Stockhom /etc/localtime
Torná-lo agnóstico em termos de distribuição exigiria pesquisar o método de cada distribuição para reconfigurar o fuso horário. Se você olhar /etc/localtime, notará que não é um arquivo de texto.