為什麼要用 Docker 建立本機開發環境? 用 Docker 有什麼好處? 除了避免環境建立卡關、失敗之外還有什麼好處呢?
本文教你快速、簡單建立本機的 docker + php + nginx + Node.js 開發環境 😎
為什麼我選用 Docker 建立環境呢? 絕不是因為鯨魚很可愛 🐳
index:
為什麼要用 Docker 建立本機開發環境?
情境~~
如果同一個專案下,有很多工程師,每個人的環境可能都會不一樣….
`守舊派的 PHP 5.5, 追隨市場的 PHP 7.0, 喜歡嘗鮮的 PHP7.3`
然後~ 正式的線上環境則是 PHP 7.2
單是 PHP 版本就有差異了,如果再配上 MySQL、nodejs 和 npm 各個環境上的誤差可能就更精彩了!!
產品沒有出問題真是有老天保佑 🙏🙏🙏
這種情況下就很容易聽到…
『在我電腦是好的!』 😱😱😱
使用 Docker 建立本機開發環境的優點
透過 Docker in Local 可以解決以下問題,也是使用 Docker 後的優點~
- 統一團隊成員的開發環境
讓開發環境和線上 Production 環境相似 - 避免 『在我的電腦是好的』 情況
- 記錄環境設定
可以利用 GIT 記錄環境設定變動 - 降低升級服務各種相依性錯誤的故障問題
e.g. 升級 PHP 後 DB driver 不能用 - 快速抽換版號
e.g. 因各種不同情況變更 PHP 版本 - 超快速啟動!
- 建製時間快速
在 dockerfile 完備的情況下, 10~30 分鐘內就可以建立完成
如果把 docker image 生成 push 至 repository, 建製速度會更快!! - 跨平台 mac, windows, linux-like 都可用
- 保護本機環境,不要讓開發環境汙染到一般作業環境
不會因為手誤把本機環境、os 弄壞,反而造成電腦一般事務無法操作 😭
Docker 的缺點
當然有優點就有缺點
- 需要學習 docker 架構
dockerfile
,docker-compose.yml
寫法 - 需要有人維護 dockerfile
沒有不需要維護的東西 😭 - 回應速度問題
在 Mac / Windows 環境下因為檔案格式不同,docker 在檔案轉換、傳輸時有緩慢問題。慢的感覺因人而異
詳細的解決方式 https://github.com/EugenMayer/docker-sync
開始使用 Docker 建立本機開發環境
Docker 的基本構成這邊就不提了
主要使用 dockerfile、docker-copmose
👉 直接到 GitHub clone 製作好的 dockerfile,cscolabear/docker-dev
git clone https://github.com/cscolabear/docker-dev
詳細安裝說明可以參照 README.md
https://github.com/cscolabear/docker-dev/blob/master/README.md
其中~ 幾個 Branch 各有特定功能、服務
可以依需要的服務自行 merge~
簡單來說 clone 後執行docker-compose up -d
就可以了~
接著可以連接進入 workspace 這個 container
(實際路徑,請參照你安裝的位置)
$ cd ~/Projects/ && clear && docker-compose exec workspace bash
連接成功之後,可以在 container 內做各種操作如下圖 ~
其它更多詳細安裝、操作可以從 README.md 找到~
Docker 之外的替代方案
當然~ 就上面提到 Docker 的缺點 你也不一定要選用 Docker
以 PHP 開發來說的話~,替代方案還有:
Vagrant – https://www.vagrantup.com
Valet – https://laravel.com/docs/master/valet
Homestead – https://laravel.com/docs/5.8/homestead
VM – virtual machine 在虛擬機裡自己裝開發環境 XD
不過老實說~ 還是 Docker 泛用性比較高 😓
Ref.
LaraDock – https://laradock.io/
建置、參考
結論
- 無論如何還是要熟悉環境安裝
- 減少開發環境維護的時間
- 隔離開發與一般作業環境
- 記錄環境設定、安裝版本
很棒~~!
乾蝦