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. 云栖社区用机器人爬CSDN的文章?

    这个云栖社区的文章https://yq.aliyun.com/ziliao/539322 这篇文章是我13年写的,不知道咋插入图片,见谅. 下面是我的文件记录 分享XAML图标的网站 原创 2013年 ...

  2. java sigar获取本地信息以及org.hyperic.sigar.SigarException: The device is not ready报错解决

    window下,使用java sigar 获取磁盘使用率,cpu使用率以及内存使用情况等信息时. 一:首先需要下载jar包和相关文件 sigar-1.6.4.zip 如果想了解更多可以去 sigar官 ...

  3. Centos 部署.net Core

    1.安装net core框架 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo ...

  4. ansible安装 使用 介绍

    1.介绍安装 a.介绍 Ansible:—基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作. b.安装 ...

  5. Debian+Django+uWsgi+nginx+mysql+celery

    下载系统各种依赖 nano /etc/apt/sources.list 在Debian中使用apt-get安装软件包时经常会提示让你插入netinst的光盘: Media change: please ...

  6. SSM框架:解决后台传数据到前台中文乱码问题,使用@ResponseBody返回json 中文乱码

    解决方法一:@RequestMapping(value="/getphone",produces = "text/plain;charset=utf-8") / ...

  7. 安装jar包到maven仓库

    1)将所要安装的jar包放在自定义目录下. 2)(maven环境变量配置无误的情况下)windows环境下,打开命令提示符,输入如下命令: mvn install:install-file -Dfil ...

  8. DS博客作业01—日期抽象数据类型设计与实现

    1.本章学习总结 1.1 思维导图 1.2学习体会 开学就来了个大作业,还要求用的是c++语法,作为一个只听过没学过的未知语法,靠着CSDN和寝室大佬的帮助下渐渐地了解了一些c++的使用,现在也可以使 ...

  9. Bicoloring 二分图+染色

    https://vjudge.net/contest/281085?tdsourcetag=s_pcqq_aiomsg#problem/B #include<stdio.h> #inclu ...

  10. 字节跳动19春招研发第一次在线笔试-A卷

    结果:凉. 说明 此博客仅为笔试记录所用,如涉及版权或保密问题,请联系我及时删除. 联系方式:georgehu716@qq.com 1. 找零 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C ...