7

我有一个爬虫,它使用在 Docker localhost:8050 上运行的 splash 在抓取之前呈现 javascript。我正在尝试在 heroku 上运行它,但不知道如何配置 heroku 以在运行我的网络之前启动 docker 以运行 splash:scrapy crawl abc dyno。非常感谢任何指南!

4

2 回答 2

6

从我收集到的你所期待的:

  • 通过 Docker 容器在 Heroku 上运行的 Splash 实例
  • 在 Heroku dyno 中运行的 Web 应用程序(Scrapy spider)

飞溅实例

运行 Dyno Scrapy Web 应用程序

  • 将您的应用程序配置为指向<app-host-name>:8050. 并且 Scrapy 蜘蛛现在应该能够请求之前运行的 Splash 实例。
于 2017-09-06T06:20:24.307 回答
5

运行同样的问题。最后,我在 Heroku 上成功部署了 splash docker 镜像。这是我的解决方案:我从github克隆了启动项目并更改了 Dockerfile。

  • 删除命令 EXPOSE,因为 Heroku 不支持它
  • 将 ENTRYPOINT 替换为 CMD 命令。

CMD python3 /app/bin/splash --proxy-profiles-path /etc/splash/proxy-profiles --js-profiles-path /etc/splash/js-profiles --filters-path /etc/splash/filters - -lua-package-path /etc/splash/lua_modules/?.lua --port $PORT

请注意,我添加了选项 --port=$PORT。这只是监听 Heroku 指定的端口,而不是默认的(8050)

一个带有此更改的项目的分支在这里可用 您只需要构建 docker 映像并将其推送到 heroku 的注册表,就像您之前所做的那样。您可以先在本地测试它,但您必须在运行 docker 时传递环境变量“PORT”

sudo docker run -p 80:80 -e PORT=80 mynewsplashimage

于 2017-11-21T13:28:02.110 回答