python 爬蟲在 docker 中的應用實戰(zhàn)


使用 docker 統(tǒng)一開發(fā)、測試、發(fā)布環(huán)境颊糜。* 示例項目地址哩治。

docker 的在線和離線安裝

  1. 在線安裝

  2. 離線安裝

    官網(wǎng)下載對應平臺的安裝包。

  3. 核心概念

    • 鏡像衬鱼,類似于虛擬機/操作系統(tǒng)鏡像业筏,可以理解為面向Docker引擎的只讀模版。是創(chuàng)建docker容器的基礎鸟赫,可以看作面向?qū)ο笾械念悺?/li>
    • 容器蒜胖,通過鏡像創(chuàng)建的一個實例,類似于一個輕量級的沙箱惯疙,或者說是一個已經(jīng)啟動的操作系統(tǒng)翠勉。Docker使用容器來運行和隔離應用∶沟撸可以看作面向?qū)ο笾械膶ο蟆?/li>
    • 倉庫对碌,可以看作代碼庫(如果是java,可以看作是maven或者gradle的倉庫)蒿偎。是Docker集中存放鏡像文件的地方朽们。
  4. 基本使用(對比git),mac和windows都有相應的圖形界面诉位。

    • 鏡像拉取: docker pull imagename:tag
    • 從鏡像運行容器(鏡像不存在時會自動pull骑脱,任務結(jié)束后容器就會自動停止): docker run --rm -v /var/code:/root/code -p 8080:80 --name=example imagename:tag
    • --rm-d 不能同時使用
    • 交互式運行容器中的指定程序(容器要處于運行狀態(tài)): docker exec -it example bash
    • 啟動和停止容器: docker start/stop example
    • 從容器中復制文件或目錄: docker copy
  5. 數(shù)據(jù)卷(Data Volumes)管理

    數(shù)據(jù)卷的使用,類似Linux下對目錄或文件進行mount操作苍糠。

    • 創(chuàng)建默認數(shù)據(jù)卷

      # 只能是rw模式叁丧,會分配一個默認的VolumesName(hash值),容器被刪除時會自動刪除數(shù)據(jù)卷
      docker run -v /test_py --name=test_python --rm -it python:2.7.12 bash
      
      1. 容器中的 /test_py 目錄會被持久化在 /var/lib/docker/volumes/VolumesName (可以使用docker volume inspect 命令查看)中岳瞭。
      2. Mac下無法直接查看 /var/lib/docker 到拥娄,需要在這個模式下 screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty 查看,具體可以查看這里瞳筏。
    • 給數(shù)據(jù)卷掛載宿主主機的目錄或文件

      # 容器被刪除時不會刪除數(shù)據(jù)卷
      docker run -v ~/project/pythonProject/test_py:/code:rw --name=test_python --rm -it python:2.7.12 bash
      docker run -v ~/project/pythonProject/test_py/helloworld.py:/code/helloworld.py:ro --name=test_python --rm -it python:2.7.12 bash
      
  • 命名數(shù)據(jù)卷的使用稚瘾,使用這個數(shù)據(jù)卷的容器被刪除時不會刪除數(shù)據(jù)卷

    數(shù)據(jù)卷命令
  1. 網(wǎng)絡管理

    默認情況下,在容器外部是無法通過網(wǎng)絡來訪問容器內(nèi)的網(wǎng)絡應用和服務的姚炕。通過 -p 參數(shù)來指定端口映射摊欠。

    docker run -p ip:hostport:containerport imagename
    

    實例

    # ip一般省略為127.0.0.1, 訪問宿主主機的8080端口相當于訪問容器的80端口
    docker run -p 8080:80 imagename
    

實戰(zhàn)--搭建基于docker的scrapy開發(fā)和發(fā)布環(huán)境。

  • 示例項目地址

  • 使用Dockerfile構(gòu)建一個python scrapy爬蟲的鏡像柱宦,可以直接通過docker build -t scrapyd-dev:1.0.0 .命令構(gòu)建鏡像些椒,最終會使用docker-compose來實現(xiàn)。

    # Dockerfile
    # Author: weineel
    FROM python:2.7.13
    
    MAINTAINER weineel LiJF_wn@163.com
    
    WORKDIR /var/code
    
    # COPY/ADD(可以是一個壓縮包掸刊,會自動解壓)
    COPY ./etc/pip.conf /root/.pip/pip.conf
    COPY ./etc/scrapyd.conf /etc/scrapyd/scrapyd.conf
    
    RUN pip install --no-cache-dir scrapy scrapyd
    
    # 定義編譯指令
    # 在編譯時通過 docker build --build-arg _TZ=Asia/Shanghai,_TC=weiguo -t test_python:1.0.0 . 方式指定免糕,
    # 可以用在run等指令中,做分支判斷
    ARG _TZ=Asia/Shanghai
    ARG _TC
    # 在啟動容器是 -e 指定環(huán)境變量,會覆蓋編譯時賦的值说墨。
    ENV TZ $_TZ
    ENV TC $_TC
    
    VOLUME /var/code
    
    EXPOSE 6800
    
    # ENTRYPOINT ["/bin/bash"]
    # ENTRYPOINT 和 CMD的區(qū)別
    # 相當于開機啟動項,container在啟動時執(zhí)行
    CMD ["scrapyd", "--pidfile="]
    
    
  • 使用docker-compose管理docker

    # docker-compose.yml
    version: '3.1'
    
    services:
    
      scrapyd:
        build:
          context: ./scrapyd
          dockerfile: ${ScrapydDockerfileName}
        ports:
          - "6800:6800"
        volumes:
          - ./scrapyd_data:/var/lib/scrapyd
          - ../:/var/code
        # depends_on:
        #   - splash
        # links:
        #   - splash
        restart: always
    
      splash:
        image: scrapinghub/splash
        ports:
          - "8050:8050"
            
    
  • 構(gòu)建步驟, 以下命令在項目根目錄中的docker目錄下執(zhí)行

    1. 初始項目目錄結(jié)構(gòu)

      屏幕快照 2017-09-07 下午5.45.52.png
    2. docker-compose up scrapyd 啟動容器苍柏。

    3. docker-compose exec scrapyd bash 進入容器(相當于遠程登錄的服務器)尼斧,容器中安裝了scrapy包,可以執(zhí)行scrapy的命令行工具等试吁,因為把項目根目錄掛在到了容器的/var/code 所以在容器中的/var/code目錄下的內(nèi)容和項目根目錄一致的棺棵。

    4. scrapy startproject myproject 創(chuàng)建爬蟲項目,此命令是在容器中執(zhí)行的熄捍,注意觀察命令行提示符烛恤。

    5. scrapy genspider gjfgw http://www.ndrc.gov.cn 創(chuàng)建爬蟲

    6. 接下來就是快樂的寫爬蟲了scrapy

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末余耽,一起剝皮案震驚了整個濱河市缚柏,隨后出現(xiàn)的幾起案子吼虎,更是在濱河造成了極大的恐慌骄呼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伤为,死亡現(xiàn)場離奇詭異袱耽,居然都是意外死亡杀餐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門朱巨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來史翘,“玉大人,你說我怎么就攤上這事冀续∏矸恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵沥阳,是天一觀的道長跨琳。 經(jīng)常有香客問我,道長桐罕,這世上最難降的妖魔是什么脉让? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮功炮,結(jié)果婚禮上溅潜,老公的妹妹穿的比我還像新娘。我一直安慰自己薪伏,他們只是感情好滚澜,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嫁怀,像睡著了一般设捐。 火紅的嫁衣襯著肌膚如雪借浊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天萝招,我揣著相機與錄音蚂斤,去河邊找鬼。 笑死槐沼,一個胖子當著我的面吹牛曙蒸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岗钩,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纽窟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兼吓?” 一聲冷哼從身側(cè)響起臂港,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎周蹭,沒想到半個月后趋艘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡凶朗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年瓷胧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚愤。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搓萧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宛畦,到底是詐尸還是另有隱情瘸洛,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布次和,位于F島的核電站反肋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏踏施。R本人自食惡果不足惜石蔗,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畅形。 院中可真熱鬧养距,春花似錦、人聲如沸日熬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耘纱,卻和暖如春敬肚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背束析。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工帘皿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畸陡。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像虽填,于是被迫代替她去往敵國和親丁恭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件斋日?Google Compute Engi...
    ahohoho閱讀 15,532評論 15 147
  • 五牲览、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的恶守。此外第献,除了...
    R_X閱讀 1,748評論 0 7
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,499評論 0 120
  • 一盞銀缸,燈花漸瘦衫樊,照亮了離人的背影飒赃。閑翻小說,偶然間遇到了這本《從你的全世界路過》科侈,瞬間感覺像是見到了一個知音载佳。...
    稚筆清澤閱讀 637評論 5 13
  • 人品爆發(fā)的一次! 晚上9點多到觀音橋臀栈,吃順風123蔫慧,創(chuàng)意菜! 大半夜去洪崖洞权薯,走小路姑躲,但是燈光都關了,遺憾崭闲! 第二...
    陳晨沉辰宸臣忱chen閱讀 234評論 0 0