前端 - 如何正確的使用 docker 來(lái)運(yùn)行 webdev?
問題描述
后端的 php nginx 服務(wù)都跑在 docker 上
現(xiàn)在我想把前端的構(gòu)建工具也跑在 docker 上,例如 node gulp 等等
應(yīng)該怎么處理這個(gè)工作流,單獨(dú)新建一個(gè)容器嗎?如果有多個(gè)項(xiàng)目,應(yīng)該如何操作?
問題解答
回答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è)。所以想問你的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不好寫反正。3, 混合,感覺最好的方式還是看具體的業(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,我覺得你可以參考或者直接使用 。
相關(guān)文章:
1. python - Django內(nèi)使用filter過(guò)濾時(shí)間,只認(rèn)年份不認(rèn)月份是怎么回事?2. javascript - 求助這種功能有什么好點(diǎn)的插件?3. css - div內(nèi)部滾動(dòng),安卓沒有滾動(dòng)條(非body滾動(dòng)),有什么辦法可以顯示嗎?4. javascript - 關(guān)于一段 for 循環(huán)代碼執(zhí)行順序的問題5. python - 如何對(duì)列表中的列表進(jìn)行頻率統(tǒng)計(jì)?6. Android Chrome忽略-webkit-text-size-adjust:none屬性。縮小文字時(shí),文字會(huì)被縮放7. python - Push Notification推送服務(wù)在手機(jī)上測(cè)試時(shí)候無(wú)法收到生產(chǎn)環(huán)境的推送8. html5 - angularjs中外部模版加載無(wú)法使用9. javascript - vue中父組件向子組件傳遞Object時(shí),如何避免TypeError?10. javascript - mac sourcetree 如何查看某個(gè)版本的全部文件?
