Как запустить ниже сервисы в докере Entrypoint - PullRequest
0 голосов
/ 28 мая 2018

Я хочу запустить ниже сервисов, когда контейнер работает.

sudo service celeryd start
sudo service celerybeat start 
service php7.0-fpm start 
service rsyslog start 

Действующая ниже команда не работает AWS ECS.И выбрасываю некоторые ошибки.

ENTRYPOINT sudo service celeryd start 
&& sudo service celerybeat start 
&& service php7.0-fpm start 
&& service rsyslog start && bash

Посоветуйте, пожалуйста, как это сделать

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

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Я не рекомендую общий дизайн, так как вы запускаете несколько приложений в одном контейнере.У вас нет обработки ошибок или обратной связи, если какой-либо один сервис не запускается.Тем не менее, исправить вашу текущую проблему можно с помощью команды, которая не завершится, когда нет ввода.

ENTRYPOINT service celeryd start \
 && service celerybeat start \
 && service php7.0-fpm start \
 && service rsyslog start \
 && tail -f /dev/null
0 голосов
/ 29 мая 2018

поместите все команды в файл start.sh и дайте разрешение на выполнение, скопируйте эти файлы в образ докера при создании образа докера

запишите файл докера ниже CMD ["./start.sh"]

0 голосов
/ 28 мая 2018

Команды, которые вы пытаетесь выполнить в качестве точки входа, являются выражением bash, поэтому они должны выполняться внутри терминала bash:

ENTRYPOINT ["/bin/bash", "-c", "sudo service celeryd start && sudo service celerybeat start && sudo service php7.0-fpm start && sudo service rsyslog start && tail -f /dev/null"]

Кроме того, ваша последняя команда - bash, поэтому контейнер завершится правильнопосле выполнения точки входа.Вы должны предоставить команду, которая не заканчивается

...