Dockerfile: 创建 dockerfile 文件, 命名为 dockerfile-yourProject-node.8.12.0-pm2

# MAGE:     yourGroup/yourProject-node.8.12.0-pm2
# VERSION: 1.0.0
# AUTHOR: ecalf

# 基于网上公开的 docker 镜像构建,根据你的需要到 hub.docker.com 上找对应的镜像
FROM mhart/alpine-node:8 MAINTAINER ecalf <ecalf@xxx.com> #backup Dockerfile
COPY dockerfile-yourProject-node.8.12.0-pm2 ~/Dockerfile #whereis node
RUN ln -s /usr/bin/node /usr/local/bin/node
RUN ln -s /usr/bin/node /usr/sbin/node
RUN ln -s /usr/bin/node /usr/lib/node # Setting time zone
RUN apk update && apk add ca-certificates && \
apk add tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone #some module installed via cnpm of taobao
RUN echo ';fsevents_binary_host_mirror=https://npm.taobao.org/mirrors/fsevents' >> ~/.npmrc
RUN echo ';sass_binary_site=https://npm.taobao.org/mirrors/node-sass' >> ~/.npmrc
RUN echo ';phantomjs_cdnurl=http://npm.taobao.org/mirrors/phantomjs' >> ~/.npmrc
RUN echo ';electron_mirror=https://npm.taobao.org/mirrors/electron' >> ~/.npmrc
RUN npm config set registry http://192.168.1.53:4873 #npm install
RUN npm install -g pm2 EXPOSE 80 CMD ["node" ,"-v"]

创建文件夹, 把 dockerfile-yourProject-node.8.12.0-pm2 放进文件夹内,在命令行进入 该文件夹,执行下面命令构建底包,不要 在包含很多额外文件的文件夹内打包,否则准备docker上下文环境会花掉很长时间。

docker build -t hub.docker.xxx.com/yourGroup/yourProject-node.8.12.-pm2:1.0. -f dockerfile-yourProject-node.8.12.-pm2 .

构建项目的 Dockerfile 文件, 一个例子,具体根据自己项目具体情况来编写

# MAGE:     yourGroup/yourProject
# VERSION: 5.8.0
# AUTHOR: ecalf FROM hub.docker.xxx.com/yourGroup/yourProject-node.8.12.0-pm2:1.0.0 MAINTAINER ecalf <ecalf@xxx.com> # This section for common define
ENV WORK_DIR /home/project/www.xxx.com
ENV LOG_DIR /data/log
ENV CONFIG_DIR /home/project/node/www.xxx.com/confLocal # This section for import code & config
RUN mkdir -p $WORK_DIR
RUN mkdir -p $LOG_DIR
RUN mkdir -p $CONFIG_DIR WORKDIR $WORK_DIR
COPY tar/xxx.com.tar.bz2 $WORK_DIR
RUN tar -xjf xxx.com.tar.bz2
RUN rm xxx.com.tar.bz2COPY conf/process.json $WORK_DIR EXPOSE 4305 CMD ["pm2-docker", "start", "/home/project/www.xxx.com/process.json"]

项目镜像打包命令, 从命令传入新镜像的 tag,脚本 命名为 buildDocker, 则执行  buildDocker 1.0.0

#!/bin/sh

tag=$
if [ 'n'$ = 'n' ]; then
echo 'please input tag as argument'
else
sudo docker build -t hub.docker.xxx.com/yourGroup/yourProject:${tag} .
fi

项目镜像的启动,从命令行传入要启动的镜像 tag,脚本 命名为 runDocker, 则执行  runDocker 1.0.0, 例子中设置了 环境配置文件夹、日志文件夹 的 挂载

#!/bin/sh

tag=$
sudo docker run --name yourProject -p : -v /home/ecalf/work/docker/yourProject/config:/home/project/www.xxx.com/confLocal -v /home/ecalf/work/docker/yourProject/logs:/home/project/www.xxx.com/logs -v /home/ecalf/work/docker/yourProject/log:/data/log -d hub.docker.xxx.com/yourGroup/yourProject:${tag}

构建一个 预装 pm2 的 node 项目 docker 底包的更多相关文章

  1. 构建一个简单的Spring Boot项目

    11 构建一个简单的Spring Boot项目 这个章节描述如何通过Spring Boot构建一个"Hello Word"web应用,侧重介绍Spring Boot的一些重要功能. ...

  2. 在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器

    配置域名 在阿里云找到主域名 进入主域名之后,右上角添加解析,添加子域名, 记录类型选择cname,主机记录填写子域名的名称,记录值为主域名,至此阿里云已经配置好了. 检查nginx安装 首先检查服务 ...

  3. 从零开始构建一个的asp.net Core 项目

    最近突发奇想,想从零开始构建一个Core的MVC项目,于是开始了构建过程. 首先我们添加一个空的CORE下的MVC项目,创建完成之后我们运行一下(Ctrl +F5).我们会在页面上看到"He ...

  4. 用Java构建一个简单的WebSocket聊天项目之新增HTTP接口调度

    采用框架 我们整个Demo基本不需要大家花费太多时间,就可以实现以下的功能. 用户token登录校验 自我聊天 点对点聊天 群聊 获取在线用户数与用户标签列表 发送系统通知 首先,我们需要介绍一下我们 ...

  5. 从零开始构建一个的asp.net Core 项目(一)

    最近突发奇想,想从零开始构建一个Core的MVC项目,于是开始了构建过程. 首先我们添加一个空的CORE下的MVC项目,创建完成之后我们运行一下(Ctrl +F5).我们会在页面上看到“Hello W ...

  6. PM2 对 Node 项目进行线上部署与配置

    pm2 是一个带有负载均衡功能的 Node 应用的进程管理器. 1. pm2 主要特点 内建负载均衡(使用Node cluster 集群模块) 保持后台运行 进程守护,系统崩溃后自动重启 启动多进程, ...

  7. 从零开始构建一个的asp.net Core 项目(二)

    接着上一篇博客继续进行.上一篇博客只是显示了简单的MVC视图页,这篇博客接着进行,连接上数据库,进行简单的CRUD. 首先我在Controllers文件夹点击右键,添加->控制器 弹出的对话框中 ...

  8. node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins

    前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...

  9. Vue+webpack构建一个项目

    1.安装CLI命令的工具  推荐用淘宝的镜像 npm install -g @vue/cli @vue/cli-init 2.使用命令构建一个名为myapp的项目 vue init webpack m ...

随机推荐

  1. session前后台交互

    下面是需求需要,不同的人群进来显示不同,但是还必须是这个走到哪都的存在,不能说点击别的页面,下面红框处的数据就没有了,必须是存在的并且登陆的类型不一样,显示的也不一样,开始的时候想到的是直接调用方法, ...

  2. swoole异步群发模板消息

    1.用的是TP5.1的框架,swoole分成一个客户端发送接收消息,一个服务器负责处理信息 服务端代码,服务器要先安装swoole拓展,用 php server.php 启动进程监听 <?php ...

  3. java - day004 - 数组排序,插入,冒泡

    // 判断string 是否相等不能用 == 使用 equal 方法 Arrays.sort(数组);  数组排序算法 对基本类型. 优化的快速排序算法 对引用类型, 优化的合并排序算法

  4. DGTween 控制物体移动并且播放相应的动画

    假设有以上的状态,咱们不动的时候需要播放发呆的动画,然后任意时刻会进行Run的行动.于是有了以上的状态机. 为了完成目标追踪,比如跟随咱们的光标,这时候就需要将如以下代码: ani = gameObj ...

  5. shell脚本之不同系统上ftp交互使用

    场景:当公司将有文件要自动将ubuntu系统的文件要上传到windows上面,或者windows上的文件要下载到ubuntu上面,尤其是像什么日志啊,编译结果啊,测试结果啊等等,做个备份或者做分析处理 ...

  6. 日期时间选择器、Bootstrap日期和时间表单组件。bootstrap-datetimepicker实现年月日,时分秒的选择。

    参考链接:http://www.bootcss.com/p/bootstrap-datetimepicker/ 1.官网以及很详细的说明了如何使用,这里结合一下自己的使用来写下. 下载解压缩包以后,可 ...

  7. 简单测试Elasticsearch 7.0

    发现不同的地方 1.创建index  (注意:7.0版本之前mappings中需要增加_doc,7.0版之后已去掉) PUT http://10.10.x.x:9200/test 2.Elastics ...

  8. 网络远程唤醒 WOL Magic Packet

    Magic Packet Magic Packet白皮书介绍: The basic technical details of Magic Packet Technologyare simple and ...

  9. 大数据学习之HDFS基本命令操作05

    1)hdfs的客户端 1.网页形式->测试用 http://192.168.40.11:50070/dfshealth.html#tab-overview 2.命令行形式->测试用 3.企 ...

  10. 运营-赵本山最近有点烦:二人转产业链滑铁卢 关联公司IPO预披露

    http://news.cecb2b.com/info/20141117/2868962.shtml