3

Я хотел бы использовать переменную из окр-файла в докер-компоновать в точке входа:Переменные окружения из окр fiile в EntryPoint в Докер-compose.yml

# environment.env 
    HOST=example.com 

    # docker-compose.yml 
    some_service: 
    ... 
    env_file: ['environment.env'] 
    entrypoint: ['myexecutable', '--host', '$HOST'] 

Есть ли способ сделать это? Я нашел только одно решение:

# docker-compose.yml 
    some_service: 
    ... 
    env_file: ['environment.env'] 
    entrypoint: sh -c 'myexecutable --host $$HOST' 

Но это выглядит нарушает Docker концепцию «один процесс за контейнер» (потому что там будет 2 процесса: sh и myexecutable). И контейнер не останавливается нормально, я должен убить его docker kill или docker-compose kill.

ответ

1

Если вы хотите иметь только один вы можете запустить sh -c 'exec myexecutable --host ...', чтобы он стал одним из процессов. Хотя «один процесс на контейнер» обычно означает, что вы не запускаете диспетчер процессов. Это не редкость для того, чтобы один процесс запускал другие.

Чтобы правильно выйти из команды SIGTERM, вам необходимо настроить явные обработчики сигналов. Вы можете сделать это с помощью trap в bash или в самом приложении. См. Также https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop

+0

Entrypoint 'exec myexecutable' не работает для меня: в нем говорится, что команда' Container 'не найдена или не существует. ' ; Может ли входная точка 'sh -c 'exec myexecutable -host $$ HOST'' будет правильным решением в соответствии с философией докеров? –

+0

жаль, что я имел в виду 'sh -c 'exec ...'' – dnephin

0

Я не уверен, что файл окр, но если это переменная окружения уже в вашей оболочки сессии, вы можете использовать его в Докер-Compose файл с ${your_env_var_here}

+0

Вопрос именно о env-файле, поскольку он хранит конфигурацию для службы ... –

 Смежные вопросы

  • Нет связанных вопросов^_^