本文並不是一篇Docker的入門文章, 而是面向對Docker有必定了解的開發人員, 文章不會介紹如何安裝Docker, 以及什麼是Docker鏡像,什麼是Docker容器這些概念,若是須要了解請前往Docker官方文檔。這裏咱們只探討一下Docker在開發中的實踐,或者說咱們怎麼用Docker來幫助咱們在開發中受益。前端
隨着NodeJS的發佈,前端便像嗑了藥似的瘋狂發展,各類概念,框架,插件層出不窮,致使前端小夥伴壓力很大(鄙人後端,前端不大專業,若有不當請包涵),別的不說,就一個前端開發環境的搭建可能就要花費很長時間,一個npm install執行半天,中途還有可能由於本機環境的緣由報各類摸不着頭腦的錯,並且node_modules文件夾異常龐大,win下刪都刪不掉,常常心生罵娘衝動。所以本文就實踐一下如何用Docker來幫咱們解決前端開發中遇到的這些問題,最後也會簡單分析下後端的Docker應用。node
話很少說,咱們開始,直接上項目,碼代碼....
假如咱們有以下項目 dockerdemo:
webpack
很明顯這個項目依賴了不少插件(項目比較早,用的grunt,用gulp,webpack的小夥伴勿噴),若是是您的第一個項目的話你大概須要作如下步驟去搭建整個開發環境。web
其間還要經歷各類等待,甚至出現不明不白的錯誤。下面咱們就一步步用Docker搭建咱們的前端開發環境docker
分析一下不難發現,咱們須要的是一個安裝了node,npm的環境,若是咱們能有一個預裝好的系統那就最好不過了,幸運的是Docker剛好能知足咱們的這個需求,去DockerHub 搜一下就會發現官方提供了node的鏡像,並且各個版本包羅萬象,這樣事情就好辦了,開始寫Dockerfile構建咱們的鏡像。沒錯咱們的鏡像就是基於官方node鏡像。假如你本機的項目目錄位於/home/xiaoqiang/projects/dockerdemo,咱們在項目目錄下新建一個Dockerfile文件,並添加以下代碼:express
FROM node:4.4.7 RUN mkdir -p /home/project/dockerdemo ADD . /home/project/dockerdemo WORKDIR /home/project/dockerdemo VOLUME /home/project/dockerdemo EXPOSE 9000 35729 RUN npm install -g grunt && npm install -g bower CMD ["./grunt_release.sh"]
grunt_release.sh以下npm
#!/bin/sh npm install bower install --allow-root grunt build
分析下上面文件的內容:json
好了,代碼分析完了,總之大致思路就是咱們把本機項目目錄映射到容器中去,而且在容器中公開能夠訪問網頁的端口,並在容器啓動是執行相應命令,如安裝插件,啓編譯,啓動server等。gulp
Dockerfile寫完了下面就是基於該文件構建鏡像了,代碼很簡單:
build_docker.sh後端
#!/bin/sh sudo docker build -t dockerdemo .
執行該命令等待完成後,咱們就能夠基於該鏡像運行咱們的容器了,或者說咱們的環境基本搭建完成了。
運行容器的命令也很簡單,代碼以下: run_docker.sh
sudo docker run -it --rm --name dockerdemo -v /home/xiaoqiang/projects/dockerdemo:/home/project/dockerdemo -p 9000:9000 -p 35729:35729 dockerdemo
這樣你就能夠享受編碼的愉快過程了,而不用頭疼環境的搭建了。
你可能以爲還得寫這麼多命令多麼麻煩,若是這麼想說明你仍是沒有理解其中的道理。
Docker技術還比較年輕,對於它的理解目前是仁者見仁,智者見智,很難說最佳實踐是什麼,這一套只是個人一些思考跟應用,可能有不少不合適不合理不正確的地方,還望指點,若是感受有用還望不吝點贊~~~