Я пытаюсь настроить ElasticBeanstalk для запуска работника Flask-RQ2 внутри контейнера Docker.Итак, я создал следующую конфигурацию в каталоге .ebextensions:
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_workers.sh":
mode: "000755"
owner: root
group: root
content: |
#nohup docker exec $(docker ps | grep $(docker images -q aws_beanstalk/current-app) | awk '{print $1}') flask rq worker > /dev/null 2>&1 &
container_commands:
001-run-worker:
leader_only: true
command: "sed -i -e 's/#//' /opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_workers.sh"
ignoreErrors: true
После развертывания он не может видеть, что рабочий работает.
$ docker exec $(docker ps | grep $(docker images -q aws_beanstalk/current-app) | awk '{print $1}') flask rq info
default | 0
1 queues, 0 jobs total
0 workers, 1 queues
Updated: 2019-01-31 19:44:13.182584
И вызов рабочей команды по SSH работает хорошо:
$ docker exec $(docker ps | grep $(docker images -q aws_beanstalk/current-app) | awk '{print $1}') flask rq worker
[2019-01-31 19:46:04,618] INFO in worker: RQ worker 'rq:worker:72892ec44d9b.66' started, version 0.13.0
[2019-01-31 19:46:04,620] INFO in worker: *** Listening on default...
[2019-01-31 19:46:04,621] INFO in worker: Cleaning registries for queue: default
Что я делаю не так?
UPD
Сегодня приложение повторно развернуто, и работник, похоже, запущен.
$ docker exec $(docker ps | grep $(docker images -q aws_beanstalk/current-app) | awk '{print $1}') flask rq info
default | 0
1 queues, 0 jobs total
f89e0061ba39.13 idle: default
1 workers, 1 queues
Updated: 2019-02-01 08:24:40.154956