雖然phpenv主要用於運行PHP Laravel的環境,但不代表他不能跑其他語言或其他容器。
本文介紹,我如何讓phpenv跑python的fastapi環境,當然這只是一個概念,
目前為止,我已經讓PHP api跑HAProxy了,並且自動申請及更新免費憑證,現在就讓他來跑Python的fastapi吧。
phpenv沒有什麼限制,限制的是您的想像力😆
一、首先我先在envs的目錄touch一個環境檔。
devin@ai:~/phpenv/envs$ touch fastapi_cv2
二、新增fastapi_cv2內容如下:
DEFAULT=fastapi
PROJECT=cv2
WORKSPACE=fastapi
FOLDER=/home/devin/sd/rembg
FASTAPI_PORT=8001
這裡定義了,預設我使用fastapi.yml檔,我把Project名稱取名為cv2。
fastapi.yml檔已內建在目前最新版本的phpenv中囉,他的服務名稱是fastapi。
透過WORKSPACE的指定,我們之後可以透過簡易的bash,./console直接進入fastapi的容器中。
三、完成第二步的環境檔建立後,我們可以執行./link進行環境擋的選定,來來直接貼給畫面可能大家看,應該較有感我是怎麼操作的。
四、標準流程,當我們設定好環境檔,並執行./link選取後,就是要執行./console build啦,這個用來建立此Project專用的image。
如果需要請依自己的專案需求調整您的Python版本。(dockerfiles/Dockerfile-fastapi)
您也可以拷貝一個新的fastapi.yml檔,一切都操之在你,php僅提供了一個基本的運作方式提供參考,當然DEFATUL=fastapi要指向您新建的yml檔。
./console build
結果如下:
五、成功build完後,就來啟動看看,透過./start啟動,再透過./console ps查看。
./start
./console ps
實際畫面如下:
六、還記得第二步中,我早已指定了Project的folder了嗎? FOLDER=/home/devin/sd/rembg,讓我們用./console直接進入容器。
這便是phpenv方便的地方囉,發覺了嗎? :)
./console
實際畫面:
您應該發覺到了,自動幫您執行source /opt/python/bin/activat了,並且切換到了/app目錄。
七、標準套件安裝流程,讓我們用pip安裝套件吧。
我們可以選擇新安裝或是由已建立的requirments.txt安裝。
pip install -r requirments.txt
安裝好就像這樣囉,實際操作畫面:
八、我們可透過ctrl+d離開容器,找出此執 行的容器,因為我的project叫cv2因此可以像下方這樣
九、由於在第七步中,我們完成了requirments的安裝,我們需要把Docker的容器commit起來到image中,這樣下次重啟後才不用重裝。
簡單copy畫面中的hash及名稱,就能commit囉。
結果如下:
十、直接來一次重啟,來測看看這個Project會不會跑吧:)
./restart
操作結果如下:
因為只有一個容器,所以我們可以不指定服務名稱,查看執行畫面結果是否有誤
./console logs -f
結果如下,嗯,看起來非常正常so far so good:)
成功用phpenv執行Python的fastapi啦。
這個圖案中他Listen的port 8000是容器內的連接埠,還記得嗎,我在.env的環境設定是8001,所以我們可以透過主機端的8001進行存取的
來測測API吧,圖檔去背
加入HAProxy的設定,我們可以讓不同的語言共用同一個域名哦,不過這就另話了。
例如,我的部落格是跑Laravel的PHP環境,但API是執行Python的fastapi。
測試網址如下:
https://www.ccc.tc/api/rembg/docs
No Comment
Post your comment