Запуск команды после запуска сервера - Docker, scrapyd, scrapyd-deploy - PullRequest
0 голосов
/ 21 декабря 2018

Итак, у меня есть Dockerfile, где я хочу сохранить свой scrapyd сервер.Но, поскольку я использую scrapyd-deploy для развертывания моего Scrapy проекта, мне нужно дождаться запуска сервера scrapyd перед развертыванием яиц.Я не уверен, как это сделать с Docker, поскольку, если я использую scrapyd в качестве точки входа, он «крадет» терминал, и я не могу запустить scrapyd-deploy в последовательности.

На данный момент у меня есть кое-что, что работает, но это выглядит действительно, действительно "для меня", и мне это не нравится.Как правильно это сделать?

FROM python:3.6
SHELL [ "/bin/bash", "-c" ]

# here comes a lot of configuration, copying files, installing stuff, etc ...

# important part that I think is hacky comes at the end:
# the command below redirect scrapyd streams to /dev/null, send it to the background, deploy the eggs, than run a dummy command to keep the container alive
CMD scrapyd >& /dev/null & cd ali && scrapyd-deploy && tail -f /dev/null

Есть идеи или предложения?

1 Ответ

0 голосов
/ 24 декабря 2018

Да, я знал, что не должно быть так сложно управлять процессом с Linux.#loveLinux # linuxRocks

Итак, я нашел способ вернуть серверный процесс scrapyd в фоновый режим, выполнить развертывание с помощью scrapyd-deploy, а затем снова вернуть сервер на передний план, чтобы избежать Dockerубивает мой контейнер.Это строка CMD, которая решает все это (с комментариями):

# Set bash monitor mode on; run server on the background, deploy eggs, get server to the foreground again.
CMD set -m; scrapyd & cd ali && scrapyd-deploy && fg scrapyd
...