【问题标题】:Using docker, scrapy splash on Heroku在 Heroku 上使用 docker,scrapy splash
【发布时间】:2021-08-25 03:48:05
【问题描述】:

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

【问题讨论】:

    标签: docker heroku scrapy splash-js-render


    【解决方案1】:

    据我所知,您的期望:

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

    飞溅实例

    运行 Dyno Scrapy Web 应用程序

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

    【讨论】:

    • 谢谢。我尝试了这些命令,并且在我尝试推送之前它运行良好。 scrapinghub/splash dockerfile 没有导致 push 命令失败的 CMD 行。知道如何解决这个问题吗?
    【解决方案2】:

    运行同样的问题。最后,我在 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)

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      相关资源
      最近更新 更多