Docker上封裝scrapy-redis爬蟲,架設(shè)到云服務(wù)器上運(yùn)行

需求

  • 編寫了一個(gè)scrapy-redis爬蟲想要封裝在docker中
  • 云服務(wù)器上架設(shè)redis服務(wù),爬蟲可以使用redis來(lái)調(diào)度(服務(wù)器同時(shí)作為master和slave)

具體實(shí)施

云服務(wù)器環(huán)境準(zhǔn)備

操作場(chǎng)景:云服務(wù)器

安裝redis

  • 安裝redis服務(wù)端并啟動(dòng)(redis-server)

      sudo apt-get update
      sudo apt-get install redis-server
      nohup redis-server &
    
  • 檢測(cè)redis是否啟動(dòng)成功(redis-cli)

      ps -ef |grep redis
    
  • redis conf配置修改,bind本地ip和內(nèi)網(wǎng)段IP

      vi /etc/redis/redis.conf
    

  • bind 127.0.0.1 10.11.1.100
    
  • 重啟redis服務(wù)

      sudo service redis-server restart
    
  • 使用redis-cli本地連接運(yùn)行

      redis-cli
      keys *
    

本地docker鏡像安裝

操作場(chǎng)景:本地服務(wù)器

在爬蟲目錄下創(chuàng)建Dockerfile

vi Dockerfile

FROM python:2.7-onbuild
RUN pip install -r requirements.txt
ENTRYPOINT ["scrapy"]
CMD ["crawl", "spider1"]

在該目錄下創(chuàng)建docker鏡像

docker build -t spiderdocker:1 .

docker images查看鏡像

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
spiderdocker        1                   00d299391ce        2 hours ago         781MB

鏡像保存為1.tar,上傳到云服務(wù)器上

docker save -o 1.tar
scp 1.tar root@云服務(wù)器ip:/docker

爬蟲鏡像導(dǎo)入并啟動(dòng)

操作場(chǎng)景:云服務(wù)器

  • 鏡像導(dǎo)入

      docker load < 1.tar
    
  • 正常啟動(dòng)不帶參數(shù)(默認(rèn)的為運(yùn)行spider1爬蟲)

      docker run spiderdocker:1 
    
  • 正常啟動(dòng)帶參數(shù)(這里表示運(yùn)行spider2爬蟲)

      docker run spiderdocker crawl spider2
    
  • 后臺(tái)啟動(dòng)(默認(rèn)的為運(yùn)行spider1爬蟲)

      docker run -d spiderdocker:1
    
  • 后臺(tái)啟動(dòng)帶參數(shù)(這里表示運(yùn)行spider2爬蟲)

      docker run -d spiderdocker:1 crawl spider2
    
  • 查看運(yùn)行的容器

      docker ps -a
    
  • 爬蟲鏡像啟動(dòng)后,爬蟲就會(huì)去redis隊(duì)列消費(fèi)任務(wù)了,此時(shí)需要做的就是將爬蟲任務(wù)投放給redis了

知識(shí)點(diǎn)(坑)

  1. redis配置文件中bind,在云服務(wù)器上必須設(shè)置為云服務(wù)器的內(nèi)網(wǎng)ip或者0.0.0.0,否則docker中的爬蟲無(wú)法連接到,至于安全問(wèn)題,可以通過(guò)設(shè)置redis用戶名密碼或者防火墻規(guī)則去規(guī)避
  2. 已經(jīng)生成的docker鏡像文件不要隨便刪除,以方便之后修改完代碼重新生成鏡像時(shí)可以從本地直接拉取
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,850評(píng)論 15 147
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • 引言 在上篇使用Scrapy爬取知乎用戶信息我們編寫了一個(gè)單機(jī)的爬蟲,這篇記錄了使用Scrapy-Redis將其重...
    朱曉飛閱讀 6,889評(píng)論 1 24
  • 0. 前言 docker是什么?docker是用GO語(yǔ)言開(kāi)發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)???..
    sessionboy閱讀 4,008評(píng)論 2 49
  • 今天天氣好,本想跳繩的,不過(guò)昨天聚餐回來(lái)睡得晚,早上沒(méi)起來(lái),就做了3組啞鈴。
    arthur503閱讀 185評(píng)論 0 0

友情鏈接更多精彩內(nèi)容