Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Dockerfile在文件夹中运行scrapy crawl命令_Python_Docker_Scrapy_Dockerfile - Fatal编程技术网

Python Dockerfile在文件夹中运行scrapy crawl命令

Python Dockerfile在文件夹中运行scrapy crawl命令,python,docker,scrapy,dockerfile,Python,Docker,Scrapy,Dockerfile,我得到了一个scrapy spider,它可以在终端运行,在教程文件夹中有scrapy crawl estate 如何使用Dockerfile to cd中的run命令将其复制到教程文件夹并运行它 我的Dockerfile(不含运行cd): FROM ubuntu:18.04 FROM python:3.6-onbuild RUN apt-get update &&apt-get upgrade -y&& apt-get install python-pip -

我得到了一个scrapy spider,它可以在终端运行,在教程文件夹中有
scrapy crawl estate

如何使用Dockerfile to cd中的run命令将其复制到教程文件夹并运行它

我的Dockerfile(不含运行cd):

FROM ubuntu:18.04
FROM python:3.6-onbuild
RUN  apt-get update &&apt-get upgrade -y&& apt-get install python-pip -y
RUN pip install --upgrade pip
RUN pip install scrapy
WORKDIR /usr/local/bin
COPY scrapy_estate/tutorial/tutorial ./
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 80

您应该在docker文件中设置WORKDIR、ENTRYPOINT和CMD:

WORKDIR /tutorial-crawler
ENTRYPOINT ["scrapy"]
CMD []
然后:


不确定,但是
CMD cd tutorial_folder&&scrapy crawl$SPIDER_NAME
may workdont CMD命令需要[]括号吗?不,我在我的项目中就是这样使用的:
CMD scrapy crawl$SPIDER_NAME
。哦,好的,我会尝试你应该使用WORKDIR,而不是像RUN cd…&&do这样的大量指令,它们很难阅读,排除故障,并进行维护。您确实应该更喜欢CMD而不是ENTRYPOINT。(考虑非常有用的
docker运行--rm-it imagename sh
:设置入口点会打破这一点。)@DavidMaze为什么?如果希望使用scrapy
docker run之外的其他东西,您可以使用
--entrypoint
标志覆盖entrypoint--it--entrypoint bash imagename
不是您想要的语法。此外,我学到的常见模式是ENTRYPOINT适合于进行首次设置,然后是
exec“$@”
CMD,如果涉及到该设置,
docker运行。。。sh
form进行首次设置,然后提供一个shell,非常有用。
$ docker run -it image_name list
tutorial
$ docker run -it image_name crawl tutorial