部署过程当中老是会碰到各类各样的问题,好比在本机能启动,放到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