1.docker安装完成后,获取对应版本,可自定义node版本,默认为最新版本。

git pull node:<version>
2.编写Dockerfile,在文件中添加安装pm2命令。建议新建一个单独docker的文件,文件中存放Dockerfile,否则在build镜像的时候会将整个目录下的文件都发送至docker。
FROM node:8.12 
RUN apt-get update && apt-get install -y apt-transport-https && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt-get update && apt-get install -y yarn
 
RUN yarn config set registry https://registry.npm.taobao.org --global && \
    yarn config set disturl https://npm.taobao.org/dist --global
 
RUN npm config set registry https://registry.npm.taobao.org --global && \
    npm config set disturl https://npm.taobao.org/dist --global
 
RUN npm install -g pm2
 
ADD ./entry.sh /
RUN chmod +x /entry.sh
 
EXPOSE 3000 6001
CMD ["/entry.sh"]
 
3.编写启动脚本文件(entry.sh),在dockerfile中添加后有效,当创建容器时会自动执行该文件。注意#!/bin/sh
 
#!/bin/sh
cd /opt/appfile
pm2 start ./start.js --name myapp
pm2 logs -f myapp
 
4.执行build(在dockerFile同目录下执行),开始创建基于node镜像的新镜像,包含了pm2,也可使用save(打包)、load(解压)命令从其他服务器复制镜像使用。
sudo docker build -t node_pm2:0.1 . 
 
5.镜像创建完成后,开始创建容器,本机端口以及项目文件和容器的映射,设置容器名。
docker run -p 3000:3000 -v /home/jlj/work/myapp:/opt/myapp --name myapp -d node_pm2:0.1
docker run -d --name miaozhen_loopback -p 6201:6201 -p 6202:6202 -v /opt/starviews/miaozhenlb:/opt/bianque/nodeserver bianque_nodejs:latest
 
6.查看日志,是否启动成功
docker logs -f myapp
sudo docker logs -f myapp -t --tail 行数 容器名

7.调试容器时,可执行代码进入,仅限正在运行的容器有效

docker exec -it myapp /bin/bash

8.如果牵扯到跨主机服务访问时,可采取--link方式启动容器,服务名称改为http://host:6001

docker run --link container_name:host -p 3000:3000 -v /home/jlj/work/myapp:/opt/myapp --name myapp -d node_pm2:0.1

docker run -d --name miaozhen_manage -p 6213:3001 -v /opt/starview/miaozhenmanage/webapp:/opt/bianque/nodeserver bianque_nodejs:latest

docker环境中安装node、pm2,映射项目文件守护程序的更多相关文章

  1. macOS 下 PHPStorm + Xdebug 调试 Docker 环境中的代码

    0x00 描述 宿主机是 mac mini,构建的项目在 docker 中,所以需要在 PHPStorm 上配置 Xdebug 进行远程代码调试. 0x01 环境 宿主机:macOS High Sie ...

  2. Elasticsearch Docker环境下安装

    Elasticsearch Docker环境下安装 Daemon镜像配置的是https://registry.docker-cn.com Linux:vi /etc/docker/daemon.jso ...

  3. 在Docker容器中安装jdk和spark

    在Docker容器中安装jdk和spark 1.下载jdk和spark 可以使用迅雷等专业下载软件下载jdk和spark软件包,注意是linux版,这里直接给出下载地址: JDK下载地址 JDK进入后 ...

  4. Docker容器中安装新的程序

    在容器里面安装一个简单的程序(ping). 之前下载的是ubuntu的镜像,则可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping. $docke ...

  5. (3)ElasticSearch在linux环境中安装与配置head插件

    1.简介 ElasticSearch-Head跟Kibana一样也是一个针对ElasticSearch集群操作的API的可视化管理工具,它提供了集群管理.数据可视化.增删改查.查询语句等功能,最重要还 ...

  6. CentOS 6 中安装Node.js 4.0 版本或以上

    如果想在CentOS 6 中安装Node.js >4.0,如果通过以往的方式安装: wget http://nodejs.org/dist/v4.0.0/node-v4.0.0.tar.gz t ...

  7. uwsgi+flask环境中安装matplotlib

    uwsgi+flask的python有自身的virtual environment,可以通过如下命令进入 . venv/bin/activate 虽然通过sudo apt-get install py ...

  8. 在离线环境中安装Visual Stuido 2017

    在离线环境中安装Visual Stuido 2017 0x00 写在前面的废话 因为工作上大多数都是在离线环境中进行的,进出离线环境很麻烦,所以之前很长一段时间都在使用VS2010.后来尝试换了VS2 ...

  9. 番外篇1:在Windows环境中安装JDK

    他山之石,可以攻玉!欢迎关注我的微信公众号 本文作为构建第一个Java程序的番外篇一,跟大家探讨下在Windows下怎么安装JDK.由于本人没有Mac,因此如果是Mac的同学,请自行百度哦! 读前预览 ...

随机推荐

  1. Linux交换分区使用过多的处理办法

    处理办法 echo "vm.swappiness=0" >>/etc/sysctl.conf sysctl -p swapoff -a && swapo ...

  2. mysql ssh 跳板机(堡垒机???)连接服务器

    跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一. 正常的登录流程 使用ssh命令登录跳板机: 登录跳板机成功后,在跳 ...

  3. CNN:Channel与Core的高H、宽W的权值理解

    转自: 知乎问题[能否对卷积神经网络工作原理做一个直观的解释?https://www.zhihu.com/question/39022858]中YJango 的回答; 因总是忘记回答地址,方便以后查阅 ...

  4. Gym - 101350F Monkeying Around(线段树+树状数组)

    When the monkey professor leaves his class for a short time, all the monkeys go bananas. N monkeys a ...

  5. Hbase CMS GC 调优。

    export HBASE_OPTS="-XX:+UseConcMarkSweepGC" export HBASE_LOG_DIR=/app/hbase/logexport HBAS ...

  6. LINQ To SQL 语法及实例大全【转】

    转http://blog.csdn.net/pan_junbiao/article/details/7015633 LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查 ...

  7. 利用div绘制细线居中

    利用div配合css代码实现细线方式: 块级元素水平居中步骤: 设置宽度width 设置margin-left:auto; 设置margin-right:auto; 实现方法是,让其左右两边的外边距自 ...

  8. warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

    在C++中, char* p = "abc"; // valid in C, invalid in C++ 会跳出警告:warning: ISO C++ forbids conve ...

  9. Stack的相关API

    public class Stack<E> extends Vector<E> : Stack类代表后进先出(LIFO)堆栈的对象. 它扩展了类别Vector与五个操作,允许一 ...

  10. js设置document.domain实现跨域

    document.domain 只能实现跨子域的问题 如:xxx.com/a.html 和aaa.xxx.com/b.html 或:bbb,xxx.com/c.html 和ccc.xxx.com/d. ...