在服務器的docker中運行scrapy

前面的文章介紹了怎麼用scrapy去完成一個爬蟲,涉及動態抓取和登陸等操做。這篇文章簡單介紹怎麼讓爬蟲運行在服務器的docker裏。python

##步驟git

  1. 利用sshfs將服務器磁盤掛載到本地,實現本地開發,省去同步代碼等步驟。
  2. docker經過pull或者Dockerfile拉取鏡像。
  3. 經過docker-compose配置鏡像,在啓動的鏡像裏啓動爬蟲。

###詳細步驟: 首先安裝sshfs工具,能夠參考網上教程。 接着切換到我的目錄,新建 aliyun文件夾。github

localhost:~ swensun$ cd ~
localhost:~ swensun$ mkdir aliyun
localhost:~ swensun$ sshfs 120.78.202.210:/  aliyun/
複製代碼

以後輸入密碼,打開aliyun目錄,便可看到的服務器上的目錄掛載到了本地,能夠本地編輯,保存。docker

  1. 切換到我的目錄,新建docker文件夾,再新建爬蟲的spider文件夾。 路徑以下: /Users/swensun/aliyun/home/swensun/App/docker/spider
  • 下載Dockerfile(也能夠使用pull)下載docker鏡像。

在該目錄下新建Dockerfile文件,最簡單內容以下,數據庫

FROM python:latest

RUN apt-get update \
	&& apt-get install -y vim \
	&& rm -rf /var/lib/apt/lists/*
複製代碼

這裏執行了最簡單的操做,下載python鏡像,並執行RUN後面的命令。vim

ssh鏈接到服務器, 切到相應目錄, 執行sudo docker build -t pythonspider . 命令, 下載生成鏡像, 輸出以下: bash

image.png
執行 sudo docker images命令,能夠看到已經生成了pythonspider鏡像。
image.png

  1. 將本地寫的爬蟲複製到Dockerfile目錄,並新建docker-compose.yml文件。 文件目錄以下:
    image.png

docker-compose.yml文件內容:服務器

version: '2'
services:
  spider:
    image: pythonspider      
    volumes:
      - ./zhihu:/spider
    tty: true
複製代碼

簡單解釋:services可啓動多個服務,好比數據庫,nignx和執行程序配合生成一個容器。該服務叫spider,利用前面下載的pythonspider鏡像,將./zhihu數據卷同步到docker中。tty保證建立容器後保持後臺運行,以避免建立後關閉。 執行以下命令: ssh

image.png
image.png
如上,能夠看到建立的容器正在運行。 下面進入容器運行爬蟲
image.png

能夠看到數據卷spider已經在根目錄。進入根目錄,執行爬蟲(須要安裝python須要的包,也能夠在前面的dockerfile中安裝)。 scrapy

image.png
能夠看到和本地輸出了同樣的結果,說明docker中運行scrapy成功。

關於Dockerfile和docker-compose的其餘命令及其高級用法,我也不是很懂,後面慢慢研究。

總結: 本文介紹了sshfs工具的使用,以及docker的安裝與部署。 (Dockerfile和docker-compose)。

weixin:youquwen1226 github:https://github.com/yunshuipiao

歡迎來信一塊兒探討。

相關文章
相關標籤/搜索