使用docker,在Heroku

时间:2017-09-05 02:06:30

标签: docker heroku scrapy scrapy-splash

我有一个scrapy蜘蛛,它使用在Docker localhost:8050上运行的splash来在抓取之前渲染javascript。我试图在heroku上运行它,但不知道如何配置heroku启动docker运行启动之前运行我的web:scrapy crawl abc dyno。非常感谢任何指南!

2 个答案:

答案 0 :(得分:5)

从我收集的内容中你期待:

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

启动实例

运行Dyno Scrapy Web App

  • 将您的应用程序配置为指向<app-host-name>:8050。并且Scrapy蜘蛛现在应该能够请求之前运行的Splash实例。

答案 1 :(得分:5)

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

  • 删除了命令EXPOSE,因为Heroku不支持
  • 通过CMD命令替换ENTRYPOINT。
  

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)

使用此更改的proyect的分叉可用here 您只需构建docker镜像并将其推送到heroku的注册表,就像之前一样。 您可以先在本地测试它,但必须传递环境变量&#34; PORT&#34;在运行docker时

  

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