J'ai un fichier docker-compose exécutant quelques fichiers Docker pour créer mes conteneurs. Je ne souhaite pas modifier mes fichiers Docker pour définir des fuseaux horaires, car ils peuvent être modifiés à tout moment par les membres de mon équipe. J'ai un fichier docker-compose.override.yml pour modifier l'environnement local. Cependant, l'un de mes conteneurs (basé sur Selenium) ne semble pas tirer sur le fuseau horaire de l'hôte, ce qui me pose problème. Sur cette base, je souhaite appliquer des fuseaux horaires sur tous mes conteneurs. Dans mes Dockerfiles en ce moment je fais
ENV TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
Et tout fonctionne bien. Comment répliquer la même commande dans la syntaxe 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"
Edit: La question ne l’a pas demandé, mais je viens d’ajouter exec my-main-application
pour montrer comment le processus principal serait spécifié. exec
est important ici pour s'assurer que my-main-application
reçoit Ctrl-C (SIGINT/SIGKILL).
La solution la plus simple serait de partager le volume dans docker-compose.yml comme ceci
ipchanger:
image: codertarasvaskiv/ipchanger:raspberry
volumes:
- "/etc/localtime:/etc/localtime:ro"
C'est une solution simple:
environment:
- TZ=America/Denver