1

У меня есть Docker-контейнер на основе Alpine, который запускает S6 Overlay для управления двумя службами внутри него (музыкальной базой данных и веб-интерфейсом для управления им). Проблема заключается в том, что второй сервис является необязательным и зависит от переменной среды ${SERVICE_2} (true | false).

Итак, в основном у меня это есть, но служба не может работать, потому что блок if недопустим:

#!/usr/bin/execlineb -P

with-contenv

if [ $SERVICE_2 = true ]; then \
    sh -c "exec -a service_2 /usr/bin/php /var/www/service_2_music_admin_script.php >> /proc/self/fd/1 2>&1" \
;fi

Выполнение скрипта возвращает:

if: fatal: unterminated block

Кстати, контейнер не имеет bash ; работает Busybox. Я пытаюсь избежать установки Bash, если это не критично.

1 ответ1

2

После некоторого копания блок If в execline стал слишком большим нюансом. Итак, я решил корневую проблему: изменил на sh с переменными среды контейнера.

#!/usr/bin/with-contenv sh

...

Затем я использовал exec для выполнения процесса (иначе он не подключается к S6).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .