###### tags: `Nas and Android` # 第二步,在NAS上基於Docker安裝Python與Flask並架設一個簡易Web應用。 關鍵字: Python、Flask、Web應用。 入門flask: https://ithelp.ithome.com.tw/articles/10258223?sc=pt  flask在一般電腦實作當中,可以使用瀏覽器去看結果,倘若flask是安裝在Nas上,就需要開啟Nas的Web Staion套件。  ## 先將面入門flask的參考連結在nas上做一次。 首先要將python和flask基於docker安裝到Nas上。 <font size=6>(注意先暫時關閉防火牆)</font> 有設定防火牆的要關,沒設定的不用理會。 參考網站1:https://teslalifesharing.tustudio.app/2020/10/05/synology-nas-docker-python/ 參考網站2:https://blog.csdn.net/stone0823/article/details/120932510 2個網站上做結合,將參考網站1的requirements.txt改成與參考網站2。 ### 第一步: 先關閉防火牆與開啟ssh服務,之後記得恢復,不然被駭爛。 ### 第二步: 新增下圖中的資料夾以及檔案  之後對Dockerfile與requirements.txt進行編輯。   <font color=green>Dockerfile的第11行,表示這個docker容器只要一配置,就會去執行python的mian.py的意思。</font> 再把[入門flask](https://ithelp.ithome.com.tw/articles/10258223?sc=pt)參考網站提供的程式碼 https://gitlab.com/GammaRayStudio/DevelopmentGroup/Python/FlaskSE 直接丟入flask_test資料夾。  --- ### 第三步 在flask_test資料夾裡面,新增並編輯main.py-  到你的桌機開啟putty或是其他shell,存取nas的終端機服務。 開啟ssh後到指定路經(我的路徑是:/volume1/docker/python-flask)輸入以下指令: `sudo docker build -t flask_test .` 下載並設定docker容器。 而該容器能夠執行python。  之後即可在docker裡面發現新的docker映像檔。  ### 第四步(很重要)。 到docker套件當中進行"佈置"docker映像檔。  進行docker設定  可看到我們剛才dockerfile設定的指令。 <font size=3 color=red>注意! Dockerfile在nas的路徑會影響執行指令的路徑。</font>  連接埠設定★★★★★: 由於我們的main.py設定為port=5000,這時把docker想成一個獨立作業系統開出port:5000,然後用Nas的port:6262(隨便設)去與docker容器的port進行對接。(網路port相關知識) | 1 | 2 | | -------- | -------- | | | 儲存空間設定 (如果有出錯,先跨過這個步驟。 這步驟有無都無所謂,因為是docker,只要刪除docker就全不見了)  這個東西就很像使用虛擬機(VMware或VM Virtualbox)時,實體電腦與虛擬機的共享資料夾一樣,虛擬機可以掛載實體機的資料夾。 # 最終結果 左邊是Nas,右邊是我桌機的畫面。 然後該DOCKER就會一直執行著這樣~~  <font size=5 color=red> 最後記得: 恢復防火牆與SSH的設定。 </font> <font size=5>注意!!!!!!!!!!!!!</font> 在nas上面執行python與flask,只要每修改一次.py檔案,都需要重新"佈置"docker(也就是說從第3步開始重新做),所以最好先在桌機或筆電上開發完後,才將你的專案移植到NAS上 (Nas只提供運行的環境,並沒有提供開發的環境。),並再進行第二步決定要執行哪個檔案與參數。 又因為是移植到NAS上,你在桌機的Python與Flask都也用docker去安裝,那麼移動到Nas就只需要輸出一個docker file與python的requirements.txt就可以輕鬆移植到Nas上了。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up