SpiderClub / haipproxy

:sparkling_heart: High available distributed ip proxy pool, powerd by Scrapy and Redis
https://spiderclub.github.io/haipproxy/
MIT License
5.44k stars 912 forks source link

使用docker部署时遇见一个错误 #45

Closed metroluffy closed 6 years ago

metroluffy commented 6 years ago

使用docker部署时遇见两个错误:

#1 c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory

#2 build/temp.linux-x86_64-3.5/_openssl.c:493:30: fatal error: openssl/opensslv.h: No such file or directory

环境:CentOS 7.4, 但是我已经安装了相关联的devel

ResolveWang commented 6 years ago

是容器里的错误还是容器外的错误?

用的是relesase中的版本吗?

提供的信息太少了,没办法给出更具体的回答

metroluffy commented 6 years ago

十分抱歉,之前只简略提出了错误信息。 我使用的是relesase中的版本,以上错误发生在运行docker-compose up时,随着第一条错误发生之后的提示: Failed building wheel for cryptography,

估计是发生在容器内?因为已经安装了相关的依赖(openssl-devel、libffi-devel以及python-devel)。

ResolveWang commented 6 years ago

看样子是装scrapy的依赖cryptography出错了

你可以尝试改一下Dockerfile,根据这个答案Dockerfile中安装一些其它的依赖。暂时你先别用docker compose,直接使用Dockerfile看看能否启动scrapy worker,不行的话,尝试分层调试一下镜像,通过

docker exec -it your_container_of_the_lastest_success_level_of_image /bin/bash

来手动安装一下cryptography,看看究竟是缺了什么依赖

或者你试试在你的机器上看看能否装cryptography,是不是有些东西会依赖宿主机

codeunsolved commented 6 years ago

我在Dockfile中添加了这一句解决了:

RUN apt install build-essential libssl-dev libffi-dev python3-dev -yq

说是cryptography的安装依赖。

但是我理解都是基于同一个image (Ubuntu:16.04)这种情况大家不应该都有么?怎么看起来像是部分情况?

参考:How to install cryptography on ubuntu?

另,如果是CentOS的话,要装这些:

yum install gcc libffi-devel python-devel openssl-devel

ResolveWang commented 6 years ago

感谢回复。这个我也不是特别清楚个中原理,我在Ubuntu17和CentOS7上测试都没有问题。Docker的运行时是基于Linux Kernel的,不知道这个对它是否有影响