5

В моем Dockerfile я запускаю скрипт:

RUN /bin/sh -c scripts/init.sh

Внутри init.sh все команды, заканчивающиеся на & , не выполняются: я не могу запустить фоновые процессы. Есть идеи почему?

2 ответа2

1

У меня была похожая проблема, и что-то вроде следующего помогло мне.

RUN nohup bash -c "scripts/init.sh &" && sleep 4

Во многих случаях запущенный вами сервер еще не полностью готов. Чтобы дать серверу немного больше времени для подготовки, добавьте команду sleep. Размер спящего аргумента должен зависеть от службы, которую вы запускаете, и вам, вероятно, нужно настроить ее.

Подробнее об этом документе

0

Моя первая идея - создавать сервисы внутри контейнера вместо запуска их с помощью nohup или & , запускать их как системный сервис, и вам не нужно обрабатывать их в init.sh.

Но это не "настоящий" подход к докеру. Если вам нужно запустить более 1 службы, разделите их на разные контейнеры (1 контейнер - 1 служба) и соедините их все вместе с помощью решения docker-compose.

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