2 回答

TA貢獻1876條經驗 獲得超7個贊
正好這個問題我也想過很久,其實有幾種方案,各有利弊:
把nginx和php作為兩個容器,代碼另外放在volume,分別供php和nginx兩者掛載
好處:代碼更新靈活
壞處:感覺這作為一個服務來說很“山寨”(可以和Java/NodeJS的服務類比一下);另外,如果你用到了composer,依賴部分無法在制作鏡像中過程中自動化安裝
把nginx作為一個容器,php和代碼放在另一個容器,但其中代碼目錄也需要供nginx掛載
好處:相比1,可以把composer放入PHP容器中,制作鏡像時幫你安裝依賴
壞處:作為服務依然很“山寨”
把nginx、php和代碼全放入同一個容器
好處:更符合微服務的定義,整體對外構成一個服務;nginx和php之間可以直接用unix socket通信
壞處:除了靈活性之外,不太符合Docker官方一個容器只跑一個服務的建議
個人在開發、集成時都是用了方案2,如果以后用到swarm可能會在生產環境用方案3
聽你的方案,好像是想把nginx和代碼放入一個容器,把php單獨放入另一個容器?這種方案好像并沒有什么意義,上述2、3的好處它都沒有。

TA貢獻1780條經驗 獲得超5個贊
樓上已經給了三個方式了,我來說說實際大規模集群中的吧
在大規模集群中,不關心服務內部是怎么做的,所以更期望一個整體對外提供服務,至于怎么提供,這不屬于集群調度職責
所以,在大規模集群中,只有第三個方案:將代碼,代碼運行環境放入集群中
并且,在大規模集群中,前面都是有負載均衡網關的,所以容器中根本不會有Nginx
- 2 回答
- 0 關注
- 1166 瀏覽
添加回答
舉報