前端 - 如何正確的使用 docker 來運(yùn)行 webdev?
問題描述
后端的 php nginx 服務(wù)都跑在 docker 上
現(xiàn)在我想把前端的構(gòu)建工具也跑在 docker 上,例如 node gulp 等等
應(yīng)該怎么處理這個工作流,單獨(dú)新建一個容器嗎?如果有多個項(xiàng)目,應(yīng)該如何操作?
問題解答
回答1:這個Case....一千個人眼中有一千個docker 環(huán)境。看你怎么組網(wǎng),怎么配合應(yīng)用了。
1,像我個人,習(xí)慣待docker如進(jìn)程process, 那么我會竭力追求一個容器實(shí)例只掛起一個進(jìn)程,因?yàn)閭€人認(rèn)為如果n個應(yīng)用都跑在一個容器里,那這個容器就不是進(jìn)程級別,而是OS/機(jī)器級別了,那么建虛擬機(jī)鏡像好了,干嗎還要搞docker鏡像?。那即使是php和nginx這樣的配合,也會搞起兩個容器,可以把它看成一個應(yīng)用,然后其它語言,像你用nodejs實(shí)現(xiàn)的其它應(yīng)用,我肯定會再跑個容器實(shí)例,然后再跑個nginx反代這兩個。所以想問你的nginx+php的docker是一個容器嗎?2,也有混多個進(jìn)程在一個docker里,畢竟它還是基于From [OS] 一個操作系統(tǒng)的嘛。可以在docker里跑起個supervisor(python)這樣的process monitor,將supervisor交給docker掛起,相同的應(yīng)用不還有pm2(nodejs)?這樣的dockerfile不好寫反正。3, 混合,感覺最好的方式還是看具體的業(yè)務(wù)場景配合了,架構(gòu)嘛,要用有限的資源配合去最大程度地完成業(yè)務(wù)。建議先去看看docker帶來的優(yōu)點(diǎn)吧,以及為此優(yōu)點(diǎn)需要付出的代價(jià),才能更好地作出決策,不然亂用還不如不用。
回答2:當(dāng)然是新拉一個node的容器下來跑了,所謂容器,不就是看重了輕量,低耦的好處嘛,為了實(shí)現(xiàn)松耦合,一般數(shù)據(jù)庫、和服務(wù)器都會分2個容器來跑,把端口映射做好,甚至一個個docker都可以看成是一個個nb的可以跑各種服務(wù)應(yīng)用的進(jìn)程,而并不會占用太多資源,這也是docker的意義所在,易移植,體積小,松耦合。
回答3:前端的話無非就是 node gulp webpack yarn sass 等
這里有現(xiàn)成的,web-dev-docker,我覺得你可以參考或者直接使用 。
相關(guān)文章:
1. 如何解決docker宿主機(jī)無法訪問容器中的服務(wù)?2. 請問關(guān)于 Java static 變量的問題?3. 跨類調(diào)用后,找不到方法4. 頁面用CSS3的scale屬性進(jìn)行了縮放,圖片模糊解決不了,那么字體能否讓它們不模糊呢?5. javascript - 微信IOS頁面中input type=number輸入數(shù)字無法顯示,安卓顯示正常6. 淺談vue生命周期共有幾個階段?分別是什么?7. javascript - 動態(tài)添加路由報(bào)錯8. ios - Crash Log 里關(guān)于微信SDK的問題9. javascript - hash為什么可以做路由跳轉(zhuǎn),不會刷新頁面10. $( "html" ).parent()方法返回一個包含document的集合,而$( "html" ).parents()返回一個空集合 哪位大神來解釋下?
