Как выполнить несколько команд в одной строке linux (openshift / docker )

Я ищу способ запускать сервер django и celery в одной строке. Сервисы (django и celery) развернуты в openshift как два отдельных pods с одним и тем же образом, и в настоящее время я запускаю сервис django (pod) с помощью python manage.py runserver и celery (pod) с помощью celery -A myapp worker --loglevel=info --concurrency=8

Вместо того чтобы запускать отдельные pods для каждого, я хочу выполнять команду runserver и команду celery worker вместе. Как это сделать.

Я знаю, что && ; || используется для таких сценариев. но они не работают.

например :

cd ./app && python manage.py runserver  #this works

cd ./app && python manage.py runserver && celery -A myapp worker --loglevel=info --concurrency=8
#this will cd to app, execute runserver command. but celery command doesn't get executed.

создайте файл bash и добавьте в него две команды следующим образом :

python manage.py runserver &
celery -A myapp worker --loglevel=info --concurrency=8

сделайте его исполняемым с помощью "chmod +x"

и запустите его в вашем докер-контейнере с помощью bash my_file.sh

Код && соединяет две команды и означает, что следующая команда будет выполнена ПОСЛЕ завершения первой и в зависимости от ее кода выхода.

Это логическое и - поэтому, если первая команда возвращает false, вторая не выполняется (поскольку уже известно, что логическое и оценивается как false).

Попробуйте это:

cd /path; ( python manage.py runserver &); ( celery -A myapp worker --loglevel=info --concurrency=8 &);

Заключительный & также помещает сельдерей на задний план. Удалите его, если хотите, чтобы сельдерей был на переднем плане. Как отмечалось выше, это не "контейнерный" дизайн - если у вас есть один процесс на контейнер, остальное управление становится значительно более простым. Обычно стоит разобраться с остальными необходимыми настройками (например, emptyDir{} может использоваться для обмена файлами между контейнерами внутри pod) и упростить развертывание раньше, чем позже.

Вернуться на верх