docker


安装docker

# 安装docker
yum install docker -y

# 查看docker版本
docker -v

自动部署时需要的Dockerfile

  • 编写Dockerfile时文件名就为Dockerfile,不需要要任何后缀,编写完后放到项目根目录下
  • 版本1
    FROM docker.dm-ai.cn/public/node:10-frontend-0.01
    WORKDIR /app
    ADD . .
    RUN npm config set registry https://npm.dm-ai.cn/repository/npm && npm i && npm run build
    
    FROM docker.dm-ai.cn/public/nginx:1.17
    ENV TZ=Asia/Shanghai
    WORKDIR /www
    COPY –from=0 /app/dist /www
    COPY –from=0 /app/nginx.conf /etc/nginx/conf.d/default.conf
    EXPOSE 80
  • 版本2(嘉熙版本)
    FROM docker.dm-ai.cn/public/node:14
    
    WORKDIR /app
    COPY . .
    RUN npm config set registry https://npm.dm-ai.cn/repository/npm/ \
      && npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ \
      && npm i && npm run build
    
    FROM docker.dm-ai.cn/public/nginx:1.17
    ENV TZ=Asia/Shanghai
    COPY --from=0 /app/dist /usr/share/nginx/html
    COPY --from=0 /app/nginx.conf /etc/nginx/conf.d/default.conf
    EXPOSE 80
    CMD nginx -g "daemon off;"
  • npm config set registry https://xxx —> 设置镜像源地址
  • COPY –from=0 <源路径> <目标路径> —> 从指定目录复制文件到指定路径
  • EXPOSE —> 声明端口
  • 使用nginx -g “daemon off;”启动nginx容器的原因
    • 背景:Docker 容器启动时,默认会把容器内部第一个进程,也就是pid=1的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出。
    • 原因:nginx默认是以后台模式启动的,Docker未执行自定义的CMD之前,nginx的pid是1,执行到CMD之后,nginx就在后台运行,bash或sh脚本的pid变成了1。所以一旦执行完自定义CMD,nginx容器也就退出了。为了保持nginx的容器不退出,应该关闭nginx后台运行

  目录