zoukankan      html  css  js  c++  java
  • Docker部署nodejs应用并使用PM2作为守护进程

    环境:centos7.6 Docker version 18.06.0-ce

    mkdir /data
    cd /data
    

     拉取最新keymetrics/pm2:latest-alpine镜像

    docker pull keymetrics/pm2:latest-alpine 

    从github上拉取代码,先要安装git

    git clone https://github.com/keymetrics/pm2-docker-alpine
    

     

    cd /data/pm2-docker-alpine/example-app
    

    编写Dockerfile,WORKDIR:指定容器的工作目录 COPY:将当前目录下的文件拷贝至容器的/home/Service目录下 EXPOSE 3000:暴露容器内的端口为3000

    [root@localhost example-app]# more Dockerfile
    FROM keymetrics/pm2:latest-alpine
    
    # Bundle APP files
    RUN mkdir -p /home/Service
    WORKDIR /home/Service
    COPY . /home/Service
    #COPY src src/
    #COPY package.json .
    #COPY pm2.json .
    
    # Install app dependencies
    ENV NPM_CONFIG_LOGLEVEL warn
    RUN npm install --production
    
    # Show current folder structure in logs
    #RUN ls -al -R
    EXPOSE 3000
    CMD [ "pm2-docker", "start", "pm2.json" ]
    

     构建容器镜像,注意最后有个点

    docker build -t test_nodepm2 .
    

     查看构建成功的镜像

    docker images

    启动容器,并将容器的/home/Service映射到宿主机的/data/pm2-docker-alpine/example-app目录下,便于代码发布,修改

    docker run --name mynodepm2 -d -v /data/pm2-docker-alpine/example-app:/home/Service -p 3000:3000 test_nodepm2
    

     查询容器的运行状态

     

    在浏览器上访问容器所在的服务地址+暴露出来的端口,测试服务是否能正常

    查询项目运行状态

    docker exec -it 8205f9c2f6cd pm2 list

    docker exec -it 8205f9c2f6cd pm2 monit
    

     

    docker exec -it <container-id> pm2 monit	监控每个进程的CPU /使用情况
    docker exec -it <container-id> pm2 list	列出托管流程
    docker exec -it <container-id> pm2 show	获取有关流程的更多信息
    docker exec -it <container-id> pm2 reload all	0秒停机时间重新加载所有应用程序
    

      

    更多命令可以执行--help 查看

    docker exec -it 8205f9c2f6cd pm2 --help
    

     如何进入容器内

    docker exec -it 8205f9c2f6cd /bin/sh

    修改容器内的时区为中国上海,用于和当前时间同步,注意以下所有操作在容器内进行操作

    apk add -U tzdata
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    apk del tzdata
    

     

    参考:https://hub.docker.com/r/keymetrics/pm2 如有疑问可以留言

  • 相关阅读:
    怎么把创业的风险降到最低
    反思:创业一开始并不需要重量级的产品
    口头承诺不如白纸黑字 技术大牛曹政(前4399核心员工)期权被坑的那些事
    idea配置tomcat去启动web项目
    Closeable释放资源
    Spring的SchedulingConfigurer实现定时任务
    thymeleaf js绑定多个变量参数
    Mysql concat() group_concat()用法
    枚举
    lambda之美
  • 原文地址:https://www.cnblogs.com/caidingyu/p/11170524.html
Copyright © 2011-2022 走看看