Runit в контейнере Docker не передает переменные окружения - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь запустить многопроцессорное приложение в 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 передать переменную окружения службе / приложению?

1 Ответ

0 голосов
/ 08 января 2019

вы можете попробовать таким образом

ENV MY_ENV_VAR $MY_ENV_VAR

или

пример здесь

ARG var_name
ENV env_var_name=$var_name

и

docker build --build-arg var_name=${VARIABLE_NAME} (...)
...