Загрузка 2 процессов в dockerfile? - PullRequest
0 голосов
/ 11 февраля 2020

Кто-нибудь может помочь?

У меня есть 2 x sh (bash) сценария.

сценарий 1 постоянно выводит на STDOUT, то есть его блокировку.

Сценарий 2 вызывает службу, запускающую сценарий 1.

Так что, если я запускаю сценарий 1 - сценарий 2 никогда не запускается, а если я запускаю сценарий 2, он не будет работать, поскольку сценарий 1 не запущен.

Я думаю, что мне нужен способ запуска 2 процессов в моем dockerfile.

После работы сценарий 1 продолжит выполнять вывод в STDOUT - я продолжаю блокировать

скрипт 2 после запуска завершится.

В моем dockerfile у меня есть это, но я просто не могу заставить его работать

CMD ["sh","-c","./startme.sh","./additems.sh"]

Я также попробовал

. / Startup. sh && ./additems.sh - но поскольку запуск блокируется, аддитемы никогда не запускаются.

Аддитемы (сценарий 2) недолговечны, они будут выполнять свою работу и в конце концов, выход, очевидно, это зависит от запуска script1 (запуска).

Я думал, что это как-то связано с передачей - c до sh - но, похоже, ничего не работает

Есть идеи?

Заранее спасибо

ОБНОВЛЕНИЕ

После некоторой справки, приведенной ниже, у меня есть следующее

вот сценарий запуска

#!/bin/bash
set -e

./start-console.sh &
./additems.sh

exec "$@"

Два сценария x на самом деле работают параллельно, что является хорошей новостью, на самом деле даже дополнения после небольшой паузы удается запустить то, что ему нужно, что я добавил, чтобы разрешить завершению загрузки первого скрипта sh, т.е.

sleep 15

Так что script1 (start-console) занят выводом в STDOUT - все работает нормально

Script2 запускается одновременно, тоже хорошо, ждет 15 секунд и успешно выполняет свою команду, но затем он завершается и весь контейнер завершается ..

, если вы заметили в основной сценарий запуска, который у меня есть

exec "$@"

Что, я думал, должен был держать контейнер открытым?

1 Ответ

0 голосов
/ 12 февраля 2020

Вы можете попробовать это:

Создать стартовый скрипт (стартер. sh) так:

#!/bin/sh
./additems.sh &
./startme.sh

Предоставить права на выполнение скрипта:

chmod +x starter.sh

Вставьте следующую запись в Dockerfile:

COPY ./starter.sh /

и измените следующую строку:

CMD ["sh","-c","./starter.sh"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...