前端 - 如何正確的使用 docker 來(lái)運(yùn)行 webdev?
問(wèn)題描述
后端的 php nginx 服務(wù)都跑在 docker 上
現(xiàn)在我想把前端的構(gòu)建工具也跑在 docker 上,例如 node gulp 等等
應(yīng)該怎么處理這個(gè)工作流,單獨(dú)新建一個(gè)容器嗎?如果有多個(gè)項(xiàng)目,應(yīng)該如何操作?
問(wèn)題解答
回答1:這個(gè)Case....一千個(gè)人眼中有一千個(gè)docker 環(huán)境。看你怎么組網(wǎng),怎么配合應(yīng)用了。
1,像我個(gè)人,習(xí)慣待docker如進(jìn)程process, 那么我會(huì)竭力追求一個(gè)容器實(shí)例只掛起一個(gè)進(jìn)程,因?yàn)閭€(gè)人認(rèn)為如果n個(gè)應(yīng)用都跑在一個(gè)容器里,那這個(gè)容器就不是進(jìn)程級(jí)別,而是OS/機(jī)器級(jí)別了,那么建虛擬機(jī)鏡像好了,干嗎還要搞docker鏡像?。那即使是php和nginx這樣的配合,也會(huì)搞起兩個(gè)容器,可以把它看成一個(gè)應(yīng)用,然后其它語(yǔ)言,像你用nodejs實(shí)現(xiàn)的其它應(yīng)用,我肯定會(huì)再跑個(gè)容器實(shí)例,然后再跑個(gè)nginx反代這兩個(gè)。所以想問(wèn)你的nginx+php的docker是一個(gè)容器嗎?2,也有混多個(gè)進(jìn)程在一個(gè)docker里,畢竟它還是基于From [OS] 一個(gè)操作系統(tǒng)的嘛。可以在docker里跑起個(gè)supervisor(python)這樣的process monitor,將supervisor交給docker掛起,相同的應(yīng)用不還有pm2(nodejs)?這樣的dockerfile不好寫(xiě)反正。3, 混合,感覺(jué)最好的方式還是看具體的業(yè)務(wù)場(chǎng)景配合了,架構(gòu)嘛,要用有限的資源配合去最大程度地完成業(yè)務(wù)。建議先去看看docker帶來(lái)的優(yōu)點(diǎn)吧,以及為此優(yōu)點(diǎn)需要付出的代價(jià),才能更好地作出決策,不然亂用還不如不用。
回答2:當(dāng)然是新拉一個(gè)node的容器下來(lái)跑了,所謂容器,不就是看重了輕量,低耦的好處嘛,為了實(shí)現(xiàn)松耦合,一般數(shù)據(jù)庫(kù)、和服務(wù)器都會(huì)分2個(gè)容器來(lái)跑,把端口映射做好,甚至一個(gè)個(gè)docker都可以看成是一個(gè)個(gè)nb的可以跑各種服務(wù)應(yīng)用的進(jìn)程,而并不會(huì)占用太多資源,這也是docker的意義所在,易移植,體積小,松耦合。
回答3:前端的話無(wú)非就是 node gulp webpack yarn sass 等
這里有現(xiàn)成的,web-dev-docker,我覺(jué)得你可以參考或者直接使用 。
相關(guān)文章:
1. html5 - css3scale和rotate同時(shí)使用轉(zhuǎn)換成matrix寫(xiě)法該如何轉(zhuǎn)換?2. 默認(rèn)輸出類型為json,如何輸出html3. mysql 遠(yuǎn)程連接出錯(cuò)10060,我已經(jīng)設(shè)置了任意主機(jī)了。。。4. python的正則怎么同時(shí)匹配兩個(gè)不同結(jié)果?5. 數(shù)組排序,并把排序后的值存入到新數(shù)組中6. php多任務(wù)倒計(jì)時(shí)求助7. MySQL的聯(lián)合查詢[union]有什么實(shí)際的用處8. PHP訂單派單系統(tǒng)9. 為何 localStorage、sessionStorage 屬于html5的范疇,但是為何 IE8卻支持?10. win10 python3.5 matplotlib使用報(bào)錯(cuò)
