前端应用容器化部署 Docker

一、基础方法

针对node做后台得服务部署

  1. 由于使用到node,基于node环境,所以需要node镜像

    • 查找镜像,search后会返回镜像列表

      docker search node

    前端应用容器化部署 Docker_第1张图片
    1589880023474.png
  • 找到自己想使用得镜像,拉下来,不写版本默认为最新版

    docker pull node

  • 使用 docker images查询已有镜像

  1. 启动容器

    • docker run -itd --restart=always -p 80:80 -v /root/nodeTest/:/root/ --name nodeTest node
      • -i 允许你对容器内的标准输入 (STDIN) 进行交互
      • -t 在新容器内指定一个伪终端或终端
      • -d后台运行
      • --restart docker 重启得话,容器也重启
      • -v 挂载得文件:本地文件:容器内地址
      • --name容器别名
      • -p 端口映射
  2. 进入容器

    • docker exec -it 容器名/id /bin/bash 我们起得容器名叫作nodeTest
    • 进入容器后,进入到 /root/ 目录下,ls 会看到我们挂载得文件,在该目录启动服务就可以 node app.js
  3. 浏览器访问,成功

二、高级用法

​ 相比于基础用法,简化过程,统一配置。

​ 使用 Dockerfile 文件对将项目构建成镜像

  1. 配置 Dockerfile 文件(在node镜像基础上进一步处理)

    #dockerfile
    FROM node
    COPY . /nodeTest
    WORKDIR /nodeTest
    RUN npm install
    RUN npm i -g pm2
    EXPOSE 80
    CMD pm2 start app.js --no-daemon
    #CMD ["pm2-runtime", "app.js"]
    
    • FROM 定制得镜像都是基于 from 得镜像

    • COPY c从上下文目录中复制文件或者目录到容器里指定路径

      COPY [--chown=:] <源路径1>... <目标路径>

    • WORKDIR 指定工作目录

    • RUN 用于执行后面跟着得命令

    • EXPOSE 仅仅声明端口

    • CMD 类似于RUN 指令,用于运行程序,运行结束,容器也结束

    • cmd在docker run时运行

    • run 在docker build时执行

  2. 开始构建

    docker build -t webNode:test .

    • -t 镜像名称
    • . 上下文路径
  3. 使用该镜像启动容器

  4. 浏览器访问,成功

注:

使用命令 pm2 start app.js 之后, pm2 默认在后台运行, 如果使用了Docker后,容器运行并立即退出,需要手动给“pm2”指定参数 --no-daemon

--no-daemon // run pm2 daemon in the foreground if it doesn't exist already

CMD pm2 start app.js --no-daemon // 设置启动方式

#  或者 使用   pm2-docker
CMD pm2-docker start app.js

# 或者 使用 pm2-runtime
CMD ["pm2-runtime", "app.js"]

你可能感兴趣的:(前端应用容器化部署 Docker)