我有一个scrapy蜘蛛,它使用在Docker localhost:8050上运行的splash来在抓取之前渲染javascript。我试图在heroku上运行它,但不知道如何配置heroku启动docker运行启动之前运行我的web:scrapy crawl abc dyno。非常感谢任何指南!
答案 0 :(得分:5)
从我收集的内容中你期待:
docker
CLI和heroku
CLI docker
CLI和heroku
CLI heroku container:login
docker tag scrapinghub/splash registry.heroku.com/<app-name>/web
docker push registry.heroku.com/<app-name>/web
heroku open -a <app-name>
。这应该允许您在Heroku主机上的端口8050上看到此应用名称的Splash UI。
$PORT
设置正确,因为EXPOSE
码头工具配置未得到尊重(https://devcenter.heroku.com/articles/container-registry-and-runtime#dockerfile-commands-and-runtime)<app-host-name>:8050
。并且Scrapy蜘蛛现在应该能够请求之前运行的Splash实例。答案 1 :(得分:5)
运行同样的问题。最后,我成功地在Heroku上部署了启动码头图像。 这是我的解决方案: 我从github克隆了splash proyect并更改了Dockerfile。
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