Synology NAS Docker分享 – Python 分類:Du Tesla2020-10-052021-06-23發表於電腦3C,NAS標籤:Docker,NAS,python,Synology 這篇文章已經移到新家,請按這裡 由於最近有用Python寫了幾隻網路爬蟲程式,但不想在工作電腦上定時執行,所以就研究如何在NAS跑Python程式,其實在Synology套件中心就可以找到Python相關套件,但考量資料安全和不想維護Python眾多套件(Package)在單一系統上,所以改採在docker上執行Python,底下就是詳細安裝方法。 分享此文:TwitterFacebook喜歡 正在載入... 相關
Hi Bill, 不是很明白"自己的python 的網址"的意思? 我目前設定是透過docker當client端執行Python script, 而不是當server端使用, 所以沒有設定對應IP : Port, 不過你可以試著在docker容器的"進階設定" – “連接埠設定"裡設定對應 “本機連接埠" 和 “容器連接埠" 這樣應該就可以透過 “本機IP:本機連接埠"和對應docker溝通, 希望這樣有回答到你的問題^_^ 讚讚 回應
我是新手,我也寫了幾個py file,用window task scheduler每天定時執行爬蟲,並把結果存在sqlite中。剛買了DS220+,想跟著你的教學把幾個爬蟲放在NAS中執行,但有些問題不明白: 1) 請問docker可以同時執行4個(可以順序執行)py的爬蟲嗎? 2) 我見docker可以建立mariadb,可以把python docker收集的資料,放在mariadb 的docker嗎?不懂寫 3) 如何設定NAS的scheduler,每天執行python docker的爬蟲? 謝謝 讚讚 回應
Hi SD, 底下是我的回覆, 供你參考: 問題1)和3) – 我的做法是寫一個中控py去定時觸發指定的子爬蟲py 問題2) – 其實我也是用sqlite存放資料XD, 不過我有幫你試了一下套件中心的MariaDB5, 是可以透過docker – Python和MariaDB5溝通(mysql.connector.connect裡的host參數直接帶你的NAS local ip即可) 讚讚 回應
昨晚試做了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? 問題太多,實在抱歉,先謝謝版主。 讚讚
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) 讚讚
很棒的文章,終於用Docker 架設python成功
不過想請問成功後,要怎麼知道自己的python 的網址?,謝謝
讚讚
Hi Bill,
不是很明白"自己的python 的網址"的意思? 我目前設定是透過docker當client端執行Python script, 而不是當server端使用, 所以沒有設定對應IP : Port, 不過你可以試著在docker容器的"進階設定" – “連接埠設定"裡設定對應 “本機連接埠" 和 “容器連接埠" 這樣應該就可以透過 “本機IP:本機連接埠"和對應docker溝通, 希望這樣有回答到你的問題^_^
讚讚
Du Tesla 非常感謝你
讚讚
我是新手,我也寫了幾個py file,用window task scheduler每天定時執行爬蟲,並把結果存在sqlite中。剛買了DS220+,想跟著你的教學把幾個爬蟲放在NAS中執行,但有些問題不明白:
1) 請問docker可以同時執行4個(可以順序執行)py的爬蟲嗎?
2) 我見docker可以建立mariadb,可以把python docker收集的資料,放在mariadb 的docker嗎?不懂寫
3) 如何設定NAS的scheduler,每天執行python docker的爬蟲?
謝謝
讚讚
Hi SD,
底下是我的回覆, 供你參考:
問題1)和3) – 我的做法是寫一個中控py去定時觸發指定的子爬蟲py
問題2) – 其實我也是用sqlite存放資料XD, 不過我有幫你試了一下套件中心的MariaDB5, 是可以透過docker – Python和MariaDB5溝通(mysql.connector.connect裡的host參數直接帶你的NAS local ip即可)
讚讚
謝謝版主回覆,可能我常用JUPYTER NOTEBOOK,有些東西沒學好,我先試試吧,如有問題再向你請教,謝謝
讚讚
好的^_^
讚讚
昨晚試做了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?
問題太多,實在抱歉,先謝謝版主。
讚讚
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)
讚讚
不知道是否上一個回應太長還是包含了代碼, 留言不見了
讚讚
報告版主,謝謝你的幫助,經過多次的試驗,終於成功建立docker並成功執行。
讚Liked by 1 person