解決80%docker起不來的問題

背景

部署過程當中老是會碰到各類各樣的問題,好比在本機能啓動,放到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

優缺點分析

  1. 解決大多數的容器不能啓動問題
  2. 儘量的保證了開發環境和線上環境一致

缺點架構

  1. 增長了部署步驟:若是安裝了新的三方包,或者更改了package.json的三方包版本,須要更新基礎鏡像
  2. 若是是經過本機docker容易產生安全問題:好比我必定須要在本機登陸容器雲,這樣我本機能拉取鏡像,也能推送鏡像,只是有可能發生,固然也是能夠規避的

總的來講,這種方式是一種很好的放好,比起鏡像在生產上起不來、依賴不一致、環境不一致 基本上均可以解決了!app

相關文章
相關標籤/搜索