使用docker 解決一個小問題,你也可能用的到

之前一直以爲docker是運維用的工具,或者devops 用的工具,通常人應該用不上,直到最近發現docker 還有另一個妙用,無論是什麼語言。java

會網絡很差的時候,nodejs npm 倉庫 、ruby gem倉庫、python的 PyPI 、java 的Maven 等都不是很穩定,容易掛,node

還有就是長時間沒有更改構建過程的 項目再次初始化時候不是找不見依賴包,就是從github 下載資源失敗等等都致使項目初始化失敗,python

特別是封閉式開發(斷網)或者駐廠開發(特殊環境只能上內網)都沒法從這些源下載依賴包git

用docker 能夠很好的解決這個問題github

以nodejs爲例 ,這是我一個項目中的 Dockerfile 文件web

#設置基礎鏡像,若是本地沒有該鏡像,會從Docker.io服務器pull鏡像
FROM node:8.5.0
#建立app目錄,保存咱們的代碼
RUN mkdir -p /usr/src/node
#設置工做目錄
WORKDIR /usr/src/node

#複製全部文件到 工做目錄。
COPY . /usr/src/node

#編譯運行node項目,使用npm安裝程序的全部依賴,利用taobao的npm安裝
#ENV NODE_ENV production
ENV NODE_ENV  development

WORKDIR /usr/src/node/
RUN npm install 

#暴露container的端口
EXPOSE  8080

#運行命令
#CMD ["npm", "run","web"]
CMD ["npm", "run","getdata"]

而後執行構建鏡像的命令docker

webjs@webjs-upc:~/codepalce/nodejslearn$ sudo docker build -t  my-spider .
Sending build context to Docker daemon  7.52 MB
Step 1 : FROM node:8.5.0
 ---> de1099630c13
Step 2 : RUN mkdir -p /usr/src/node
 ---> Using cache
 ---> 5d5f5bc2b37c
Step 3 : WORKDIR /usr/src/node
 ---> Using cache
 ---> 6dd09a7a7e9e
Step 4 : COPY . /usr/src/node
 ---> a57935049527
Removing intermediate container 8a0d964fe8e9
Step 5 : ENV NODE_ENV development
 ---> Running in 8e5098063d3a
 ---> 4fb90a8eed24
Removing intermediate container 8e5098063d3a
Step 6 : WORKDIR /usr/src/node/
 ---> Running in b07d42075879
 ---> 108f84cfeeae
Removing intermediate container b07d42075879
Step 7 : RUN npm install
 ---> Running in 69b936a8763f
npm info it worked if it ends with ok
npm info using npm@5.3.0
npm info using node@v8.5.0
npm info lifecycle OpenShift-Sample-App@1.0.0~preinstall: OpenShift-Sample-App@1.0.0
npm http fetch GET 200 https://registry.npmjs.org/js-base64 876ms
npm http fetch GET 200 https://registry.npmjs.org/express 911ms
npm http fetch GET 200 https://registry.npmjs.org/async 140ms
npm http fetch GET 200 https://registry.npmjs.org/request 160ms

能夠看到執行npm install 後開始安裝npm依賴包,最後看下鏡像大小express

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              108f84cfeeae        4 minutes ago       679.8 MB
my-spider           latest              2cf0919aa431        5 days ago          758.1 MB
my-web              latest              2cf0919aa431        5 days ago          758.1 MB

生成的鏡像大約500m,生成的這些鏡像都包含了依賴包,在其餘機器上使用這些包時候都不用在下載這些依賴npm

相關文章
相關標籤/搜索