Как запускать bash-скрипты с docker-контейнерами в правильном порядке?

Как запускать bash-скрипты с docker-контейнерами в правильном порядке?

У меня есть основной скрипт bash, который выполняет несколько скриптов bash поменьше (и каждый скрипт поменьше запускает контейнер docker), но я хочу, чтобы второй скрипт запускался только после того, как первый завершит выполнение и т. д. То есть я хочу, чтобы процессы каждого скрипта НЕ запускались одновременно. Пример:

1st_script.sh param1 param2 param3
2nd_script.sh param1 param2

Предложения в Интернете не работают для меня. Я попытался получить PID 1st_script с помощью:

1st_Script & echo $!

затем использовать ps -p <PID> || <2nd_script> Но хотя <1st_Script> & echo $!дает PID, когда я проверяю, есть ли там процесс, ps -p <PID>там ничего нет. Я знаю, что 1st_script запущен, потому что контейнер docker, который он запускает, указан в списке docker ps. Так что его процесс также должен быть указан в спискеps -p <PID>

1st_Script && 2nd_Script && 3rd_Script && ...это не вариант, потому что у меня много скриптов и они не читаются

решение1

Продолжение строк может значительно улучшить читабельность:

script1 && script2 && script3 && scriptn

против

script1 \
  && script2 \
  && script3 \
  && scriptn

Но у меня возникли проблемы с воспроизведением вашей проблемы. Что дает вам впечатление, что ваши сценариинетпоследовательно?

Я сделал два тестовых сценария, каждый из которых содержал

echo hello
sleep 15s

а затем сценарий, который содержал только

./script1
./script2

и измерил время ожидания time, чтобы получить следующий вывод

hello
hello

real    0m30.003s
user    0m0.002s
sys     0m0.001s

Если бы скрипты выполнялись одновременно, общее время выполнения составило бы менее 30 секунд.

Ваша проблема в том, что вы хотитеконтейнеростановить выполнение перед переходом к следующему сценарию?

Связанный контент