解决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

相关文章
相关标签/搜索