部署過程當中老是會碰到各類各樣的問題,好比在本機能啓動,放到docker
容器中就沒法正常運行,對於這樣的問題,既很差調試,也很差定位。 今天記錄一個我遇到的問題:一個圖片處理庫,安裝的時候須要下載一些二進制的文件,在jenkins
中安裝很是慢,幾乎裝不上,這個問題困擾我了一天node
因而求助了部門的架構師大佬,他告訴我,若是實在安裝不上,可使用本機打包一個基礎鏡像的方式來部署。web
基礎鏡像方式指的是經過本機運行良好的環境下,把項目的package.json
單獨提成一個項目,在項目中進行from node
基礎鏡像操做,npm install
操做, 安裝完依賴,進行docker build
,把本機的鏡像推送到 容器雲 上面,這就是一個基礎鏡像。docker
FROM node:latest
LABEL liyonglong "liyong857637472@163.com"
COPY . /usr/src/webapp
WORKDIR /usr/src/webapp
CMD npm install
複製代碼
而後docker build
在推送到容器雲npm
而後業務項目 from
的鏡像是剛剛推上去的基礎鏡像json
FROM nodeservice-basic:node-12.15.0-v1
LABEL liyonglong "liyong857637472@163.com"
COPY . /usr/src/webapp
WORKDIR /usr/src/webapp
EXPOSE 8082
CMD node .
複製代碼
這樣依賴的問題就解決了安全
其實解決的不單單是依賴問題,採用這種方式能夠規避80%docker起不來的問題,基本上能保證你的容器是可以被啓動的,啓動以後產生的問題多半就是代碼和宿主機或配置的問題了bash
缺點架構
package.json
的三方包版本,須要更新基礎鏡像docker
容易產生安全問題:好比我必定須要在本機登陸容器雲,這樣我本機能拉取鏡像,也能推送鏡像,只是有可能發生,固然也是能夠規避的總的來講,這種方式是一種很好的放好,比起鏡像在生產上起不來、依賴不一致、環境不一致 基本上均可以解決了!app