首页 > 解决方案 > Scrapy-Splash:无法使用 scrapinghub/splash:latest 作为基础镜像运行 docker 容器

问题描述

我正在构建一个使用一些 Azure 服务和 Scrapy-Splash 的 python Scrapy 应用程序。我尝试在本地 Windows 机器中为我的应用程序创建一个 docker 镜像scrapinghub/splash:latest作为基础镜像。
下面是正在使用的 Dockerfile,

FROM scrapinghub/splash:latest
WORKDIR /usr/src/snapshot

ADD requirements.txt ./
RUN pip install -r requirements.txt

ADD . ./

EXPOSE 8888 80

ENTRYPOINT ["/usr/src/snapshot/init_container.sh"]  

init_container.sh文件有运行应用程序的语句,python /usr/src/snapshot/SiteCrawler.py.
现在,当我使用命令运行 docker 映像时docker run testsnapshot:0.1,应用程序由于导入错误而启动和停止,ImportError: No module named azure.servicebus

我尝试使用 python:3.6.6 作为基础图像创建应用程序的 docker 图像,它工作正常。

应用程序构建 docker 映像并正确安装 requirements.txt 中的包。在我的 requirements.txt 内容下面附加

asn1crypto==0.24.0
attrs==18.2.0
Automat==0.7.0
azure-common==1.1.16
azure-nspkg==3.0.2
azure-servicebus==0.21.1
azure-storage==0.36.0
certifi==2018.10.15
cffi==1.11.5
chardet==3.0.4
constantly==15.1.0
cryptography==2.3.1
cssselect==1.0.3
hyperlink==18.0.0
idna==2.7
incremental==17.5.0
lxml==4.2.5
parsel==1.5.0
pip==18.0
pyasn1==0.4.4
pyasn1-modules==0.2.2
pycparser==2.19
PyDispatcher==2.0.5
PyHamcrest==1.9.0
pyOpenSSL==18.0.0
python-dateutil==2.7.3
queuelib==1.5.0
requests==2.20.0
Scrapy==1.5.1
scrapy-splash==0.7.2
service-identity==17.0.0
setuptools==39.0.1
six==1.11.0
Twisted==16.1.1
urllib3==1.24
w3lib==1.19.0
zope.interface==4.5.0

标签: pythondockerscrapyazureservicebusscrapy-splash

解决方案


知道了。只需将WORKDIR /usr/src/snapshot添加到VOLUME,如下所示。

VOLUME ["/usr/src/snapshot"]

推荐阅读