Eu tenho um contêiner do Docker executando o systemd . Eu quero passar variáveis de ambiente para aplicativos nele.
Quando inicio o systemd no Docker ( /sbin/init
como linha de comando), o Docker expõe variáveis ao systemd, mas não expõe a serviços filho . Se eu adicionar systemd.setenv=...
ao cmdline, as variáveis serão passadas. Estou procurando uma solução mais limpa.
Como exponho variáveis de ambiente passadas /sbin/init
para aplicativos iniciados por ele?
% 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
Espero ver VAR1=1
enquanto estiver executando meu comando.
Em outras palavras, o systemd pode passar variáveis passadas a ele para filhos que ele inicia?
Para o Dockerfile, consulte o repositório do github .