Я пытаюсь запустить многопроцессорное приложение в Docker с runit, выполняющим роль процесса init, но runit не передает переменные среды в приложение:
В Dockerfile:
CMD ["runit"]
Сервисный файл /etc/service/app/run
выглядит так:
#!/bin/sh
exec 2>&1
echo "ENV_VAR=$ENV_VAR"
exec app
Когда я запускаю Docker-контейнер с установленным ENV_VAR
, переменная не передается приложению runit. Выход:
# docker run --name container -e ENV_VAR=loremipsum -d IMAGE_NAME
# docker logs container
- runit: $Id: 25da3b86f7bed4038b8a039d2f8e8c9bbcf0822b $: booting.
- runit: warning: unable to open /dev/console: file does not exist
- runit: enter stage: /etc/runit/1
/etc/runit/1: 6: /etc/runit/1: /etc/init.d/rcS: not found
/etc/runit/1: 7: /etc/runit/1: /etc/init.d/rmnologin: not found
/etc/runit/1: 12: /etc/runit/1: /etc/init.d/rc: not found
- runit: warning: child failed: /etc/runit/1
- runit: leave stage: /etc/runit/1
- runit: enter stage: /etc/runit/2
ENV_VAR=
...
* app failed because ENV_VAR was not set correctly *
Как я могу заставить runit передать переменную окружения службе / приложению?