Synology NAS Docker分享 – Python

這篇文章已經移到新家,請按這裡

由於最近有用Python寫了幾隻網路爬蟲程式,但不想在工作電腦上定時執行,所以就研究如何在NAS跑Python程式,其實在Synology套件中心就可以找到Python相關套件,但考量資料安全和不想維護Python眾多套件(Package)在單一系統上,所以改採在docker上執行Python,底下就是詳細安裝方法。

Synology NAS Docker分享 – Python 有 “ 11 則迴響 ”

  1. 很棒的文章,終於用Docker 架設python成功
    不過想請問成功後,要怎麼知道自己的python 的網址?,謝謝

    1. Hi Bill,

      不是很明白"自己的python 的網址"的意思? 我目前設定是透過docker當client端執行Python script, 而不是當server端使用, 所以沒有設定對應IP : Port, 不過你可以試著在docker容器的"進階設定" – “連接埠設定"裡設定對應 “本機連接埠" 和 “容器連接埠" 這樣應該就可以透過 “本機IP:本機連接埠"和對應docker溝通, 希望這樣有回答到你的問題^_^

  2. 我是新手,我也寫了幾個py file,用window task scheduler每天定時執行爬蟲,並把結果存在sqlite中。剛買了DS220+,想跟著你的教學把幾個爬蟲放在NAS中執行,但有些問題不明白:
    1) 請問docker可以同時執行4個(可以順序執行)py的爬蟲嗎?
    2) 我見docker可以建立mariadb,可以把python docker收集的資料,放在mariadb 的docker嗎?不懂寫
    3) 如何設定NAS的scheduler,每天執行python docker的爬蟲?
    謝謝

    1. Hi SD,

      底下是我的回覆, 供你參考:
      問題1)和3) – 我的做法是寫一個中控py去定時觸發指定的子爬蟲py
      問題2) – 其實我也是用sqlite存放資料XD, 不過我有幫你試了一下套件中心的MariaDB5, 是可以透過docker – Python和MariaDB5溝通(mysql.connector.connect裡的host參數直接帶你的NAS local ip即可)

      1. 謝謝版主回覆,可能我常用JUPYTER NOTEBOOK,有些東西沒學好,我先試試吧,如有問題再向你請教,謝謝

      2. 昨晚試做了python docker時,遇到以下一些問題,希望版主可以指點:
        1) 上文提到你另一篇網誌的第3點有關SSH的操作,「建立並切換到之後要存放資料的目錄夾(例如:/volume1/docker/transmission-openvpn)」,請問今次建立Dockerfile時,需要建立一個類似的資料夾嗎?

        2) 承上題,我有試過在取得root權限後建立folder和Dockerfile,但在NAS的file manager卻沒有看到這些檔案,是否代表透過SSH操作的東西都不會在file manager出現?那麼我如何整理這些檔案?包裝docker image後,這些folder和dockerfile檔可以刪除嗎?

        3) requirements.txt是用作安裝套件,是否代表當docker建立後,我們是不能後加其他套件?

        4) 我的爬蟲其中一個是用selenium的,是否在原先的dockerfile中加上(google的):
        # install google chrome
        RUN wget -q -O – https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add –
        RUN sh -c ‘echo “deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list’
        RUN apt-get -y update
        RUN apt-get install -y google-chrome-stable

        # install chromedriver
        RUN apt-get install -yqq unzip
        RUN wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
        RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/

        # set display port to avoid crash
        ENV DISPLAY=:99

        # upgrade pip
        RUN pip install –upgrade pip

        # install selenium
        RUN pip install selenium

        5) 「寫一個中控py去定時觸發指定的子爬蟲py」,請問有沒有相關的套件可以介紹如何每天定時觸發指定的子爬蟲py?

        問題太多,實在抱歉,先謝謝版主。

      3. Hi SD,

        回覆如下, 供你參考
        1) 需要, 你可以參考文章中的步驟9
        2) 可以在file manager看到, 可能是你的權限不夠(你是用admin登入嗎?)新建的folder就是之後存放py file和相關檔案(ex. sqlite db file…)的地方
        3) docker建立後還是可以到docker的終端機以pip install新增套件, requirements.txt只是方便第一次建置環境批次安裝套件用
        4) 應該可以, 你可以試試看, 我有遇過因為linux kernal版本不同需要額外更改的狀況
        5) 我是自己寫(就while loop + sleep控制XD)

發表留言

使用 WordPress.com 設計專業網站
立即開始使用