2019年10月27日 星期日

PHPStorm與遠端(Remote)Docker整合

以前開發PHP時,修改後需要手動上傳到遠端伺服器上,然後再測試執行結果
使用PHPStorm之後只可以減少手動執行的步驟,PHPStorm可以自動將變更的檔案佈署到遠端伺服器上(或者是多台的伺服器群組),在透過遠端的Docker執行單元測試

使用Docker來做單元測試是可以保持環境的一致姓,因為平時開發環境可能會安裝多個版本的PHP或者調整php.ini的關係造成與實際佈署環境不一致的情況,每次執行單元測試的容器都是一次性使用的,執行完單元測試後就會自動銷毀


PHPStorm with remote Docker 架構圖



1.設定Docker主機

新增Docker主機,輸入遠端的 Restful api 即可,輸入後會自動檢查是否可用

預設Restful API是沒有開啟的,如果要開啟可參考上一篇

2.設定佈署(Deployment)

2.1 新增一個SFTP主機



2.2 輸入主機名稱



2.3 輸入主機名稱、帳號、密碼,輸入後可點選Test進行測試



2.4 設定要佈署的目的路徑(Deployment path)




2.5 點選瀏覽資料夾,可使用滑鼠右鍵建立新的資料夾





3.設定PHP遠端直譯器

3.1 新增直譯器,先選擇PHP版本再點選直譯器路徑後面的「...」選擇



3.2 點選左上角的「+」新增直譯器,再選擇「From Docker」




3.3 遠端直譯器設定,先選類型為 Docker,再選要使用的映象擋




3.4 新增完畢後,會自動偵測環境如PHP版本、是否有安裝Xdebug等等



3.5 完成後回到一開始的3.1可以看到剛剛新增的直譯器已經出現在選單中了




3.6 新增一個test.php測試一下直譯器與佈署設定
再新增的test.php上按右鍵可執行佈署(Deployment)




3.7 佈署完畢後,點選 Run 執行 php




3.8 會得到一個錯誤 「Could not open input file: /opt/project/test.php」



3.9 這個問題出在 「3.5」這個步驟預設 Docker -v 參數使用的路徑是phpstorm主機的Project路徑,這個設定在Docker運行在同一台機器上時是沒有問題,但是如果Docker是執行在遠端則需要修改成佈署遠端主機的路徑



開啟PHP直譯器設定 Docker Container,在Volume bindings選項中,將Host path修改成佈署路徑即可(需要選擇項目後右側的編輯圖示才會出現)





4.0 測試完成




Refense

https://www.jetbrains.com/help/phpstorm/configuring-remote-interpreters.html


沒有留言:

張貼留言