最近在嘗試用 docker 建構各種環境,目標有 N 個:
- 實現 docker 的優勢,讓開發環境和正式環境一致,去除可能的環境差異
- 讓環境設定模塊化,搭配已經整理好的設定檔案,減少重複架設的工作內容
- 環境設定可以更為彈性和獨立,降低耦合,增加不同語言協作的可行性。
我想打造一個可以無腦部署又有彈性而且開發成本低的系統部署方法就是。
這邊弄了一個 LEMP 的結構,未來應該會在不斷新增各種可選的設定檔案上去這樣。
有興趣可以幫我點星星和留言。
先說設定檔案我都是網路上直接抓模板還有抄各種 hosting panel 的設定檔,到時還要再優化是真的。
目前玩到這裡的有些結論,記錄起來避免忘記:
- 這肯定套件王愛用,hub 上很多已經有配置好的,每個都是獨立的一包不會互相依賴。
- 不會互相依賴也是有壞處,一些基礎的套件要分開裝,所以使用 docker 還是有門檻在。
- 設定檔案先寫好,docker 的優勢就會出來,到時一包一個配置好裝起來就可以用。
- 但是因為設定檔案必須先寫好的原因,所以如果在本機開發環境上,常常會遇到一次要開不同的案子,這邊本機用 docker 就會囧囧的。
- 所有的 config 建議 mont 到宿主機的磁碟上,這邊如果不是使用官方的 docker image 就會囧囧,很多 docker 會包成一包,這樣違反 docker 無狀態的精神,建議套件王避開這種 image。
- 不要把 docker 當作 VM 來跑作業系統,這樣彈性就跑掉了。然而我也不懂是為什麼會有文章寫不建議 docker 跑 mysql ? 這個問題待釐清就是。
這裡有一份對岸知乎的比較文章,簡體字閱讀功能沒障礙的話推薦可以看一下:
同場加映 附上 Docker 安裝步驟
安裝套件
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
docker.repo 中也同時包含 edge 版本的 Docker 套件庫,不過預設是被停用的,想安裝 edge 版本的話,就要先啟用 edge 版本的套件庫(如果只是要安裝 stable 版本的人,就可以省略這一步):
sudo yum-config-manager --enable docker-ce-edge
更新 yum 的套件索引:
sudo yum makecache fast
安裝 Docker CE 版:
sudo yum install docker-ce
第一次安裝 Docker 的時候,會需要匯入 GPG 的金鑰,Docker CE 版的金鑰指紋是 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
確認無誤就選擇 y 匯入。
安裝好之後,啟動系統的 Docker 服務:
sudo systemctl start docker
執行 hello world 程式測試:
sudo docker run hello-world
安裝 docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
建立連結
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
測試版本,應該要顯示版本號碼
docker-compose --version
# docker-compose version 1.29.2, build 1110ad01
啟動 docker
systemctl start docker;systemctl enable docker;
參考資料:
可以裝起來抓裡面的設定檔案樣板,滿實用我覺得
2021-07-29 update
推薦一個不錯的筆記: