Saya memiliki wadah Docker yang menjalankan systemd . Saya ingin meneruskan variabel lingkungan ke aplikasi di bawahnya.
Ketika saya memulai systemd dari dalam Docker ( /sbin/init
sebagai baris perintah), Docker mengekspos variabel ke systemd, tetapi tidak mengekspos ke layanan anak . Jika saya menambahkan systemd.setenv=...
ke cmdline, variabel akan diteruskan. Saya mencari solusi yang lebih bersih.
Bagaimana cara mengekspos variabel lingkungan yang diteruskan /sbin/init
ke aplikasi yang dimulai olehnya?
% 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
Saya berharap untuk melihat VAR1=1
saat menjalankan perintah saya.
Dengan kata lain, dapatkah systemd meneruskan variabel yang diteruskan ke anak-anak itu dimulai?
Untuk Dockerfile, lihat repositori github .