J'ai un conteneur Docker exécutant systemd . Je souhaite transmettre des variables d'environnement aux applications situées en dessous.
Lorsque je démarre systemd à partir de Docker ( /sbin/init
en ligne de commande), Docker expose des variables à systemd, mais n'expose pas aux services enfants . Si j'ajoute systemd.setenv=...
à la cmdline, les variables sont passées. Je recherche une solution plus propre.
Comment exposer les variables d'environnement transmises /sbin/init
aux applications démarrées par celui-ci?
% docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged -ti \
-e VAR1=1 motiejus/systemd_fedora20 \
init systemd.setenv=VAR2=2
...
Welcome to Fedora 20 (Heisenbug)!
...
[ OK ] Reached target Multi-User System.
[root@740690365eb0 ~]# env | grep VAR
VAR2=2
Je m'attends à voir VAR1=1
tout en exécutant ma commande.
En d'autres termes, systemd peut-il transmettre des variables qui lui sont transmises aux enfants qu'il démarre?
Pour Dockerfile, voir le référentiel github .