2 回答

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

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