(я довольно новичок в Docker здесь.) Я пытаюсь докеризировать приложение Scrapy . В качестве первого шага я пытаюсь запустить проект в контейнере - который создает и заполняет структуру каталогов - и присоединить том к каталогу проекта для целей редактирования.
Сначала мне нужно позвонить scrapy startproject myScraper
; тогда я бы хотел вызывать пользовательские команды, такие как scrapy shell
или scrapy crawl myCrawler
, для запуска веб-сканирования.
Поскольку все команды Scrapy начинаются с вызова scrapy
, я написал этот Dockerfile:
FROM python:3
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
ENTRYPOINT scrapy #or so I thought was right ...
, где requirements.txt
- это просто Scrapy.
Теперь у меня есть пара проблем. Во-первых, ENTRYPOINT, похоже, не работает - в частности, когда я запускаю
docker build -t scraper .
docker run -it -v $PWD:/scraper --name Scraper scraper [SOME-COMMAND]
, я просто возвращаюсь в меню помощи по использованию scrapy
. (Например, если SOME-COMMAND
равно shell
или startproject scraper
.) Я пробовал несколько вариантов безуспешно. Во-вторых, если контейнер останавливается, я не уверен, как запустить его снова (например, я не могу передать команду на docker start -ai Scraper
).
Часть причины, по которой я пытаюсь это сделать Здесь команды, а не RUN и VOLUME в Dockerfile, заключаются в том, что если том создается в процессе сборки, он скрывает каталог проекта, а не копирует его содержимое из контейнера на том хоста. (То есть я получаю копию моего пустого каталога хоста в контейнере вместо заполненного каталога, настроенного с помощью scrapy startproject volumeDirectory
.)
Я посмотрел мою проблему и знаю, что, возможно, не в курсе с правильным Docker, но на самом деле такое чувство, что я спрашиваю, должно быть возможным здесь.