构建一个 预装 pm2 的 node 项目 docker 底包
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 底包的更多相关文章
- 构建一个简单的Spring Boot项目
11 构建一个简单的Spring Boot项目 这个章节描述如何通过Spring Boot构建一个"Hello Word"web应用,侧重介绍Spring Boot的一些重要功能. ...
- 在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器
配置域名 在阿里云找到主域名 进入主域名之后,右上角添加解析,添加子域名, 记录类型选择cname,主机记录填写子域名的名称,记录值为主域名,至此阿里云已经配置好了. 检查nginx安装 首先检查服务 ...
- 从零开始构建一个的asp.net Core 项目
最近突发奇想,想从零开始构建一个Core的MVC项目,于是开始了构建过程. 首先我们添加一个空的CORE下的MVC项目,创建完成之后我们运行一下(Ctrl +F5).我们会在页面上看到"He ...
- 用Java构建一个简单的WebSocket聊天项目之新增HTTP接口调度
采用框架 我们整个Demo基本不需要大家花费太多时间,就可以实现以下的功能. 用户token登录校验 自我聊天 点对点聊天 群聊 获取在线用户数与用户标签列表 发送系统通知 首先,我们需要介绍一下我们 ...
- 从零开始构建一个的asp.net Core 项目(一)
最近突发奇想,想从零开始构建一个Core的MVC项目,于是开始了构建过程. 首先我们添加一个空的CORE下的MVC项目,创建完成之后我们运行一下(Ctrl +F5).我们会在页面上看到“Hello W ...
- PM2 对 Node 项目进行线上部署与配置
pm2 是一个带有负载均衡功能的 Node 应用的进程管理器. 1. pm2 主要特点 内建负载均衡(使用Node cluster 集群模块) 保持后台运行 进程守护,系统崩溃后自动重启 启动多进程, ...
- 从零开始构建一个的asp.net Core 项目(二)
接着上一篇博客继续进行.上一篇博客只是显示了简单的MVC视图页,这篇博客接着进行,连接上数据库,进行简单的CRUD. 首先我在Controllers文件夹点击右键,添加->控制器 弹出的对话框中 ...
- node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins
前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...
- Vue+webpack构建一个项目
1.安装CLI命令的工具 推荐用淘宝的镜像 npm install -g @vue/cli @vue/cli-init 2.使用命令构建一个名为myapp的项目 vue init webpack m ...
随机推荐
- 我的redis入门之路
1:操作环境:vmware12 , centOs7 ,redis5.0.3 centOs7安装与下载链接(原文地址): https://blog.csdn.net/qq_42570879/articl ...
- [HASH]MOD运算用户哈希函数
一.概述 MOD(取模)运算配合质数的特性,可以实现一种简单的哈希算法. 二.基于的定理 在理解如何实现mod哈希前应当了解一些数学的定理: 1.x mod y = z ,实际上是x除以y的余数y的意 ...
- SQLAlchemy使用(三)搭配Flask框架使用
前言 本章应该是SQLAlchemy使用系列的最后一篇了,本章简单讲一下如何搭配Flask使用.下一篇应该是写Flask_restful相关内容了 正文 我们简单使用前两章的model,两张表 # - ...
- 常用函数php
//随机数 /** * @param int $length 随机数长度 * @param string $num 是否只包含数字 * @return null|string 返回随机字符串 */ f ...
- Flask路由&视图
1 路由 1.1app.url_map 查看所有路由 from flask import Flask app = Flask(__name__) @app.route('/') def hello_ ...
- java请求URL带参之防XSS攻击
1.web.xml新增filter配置 <!-- URL请求参数字符过滤或合法性校验 --> <filter> <filter-name>XssFilter< ...
- window10 蓝牙只能发不能收文件解决办法
打开“通过蓝牙发送和接收文件”,在“接收文件”界面中无法接收蓝牙发送的文件 解决办法: 1. win+R后,输入msconfig,回车 2. 点击服务,勾选隐藏Microsoft服务,点击全部禁用 3 ...
- 2018-2019-2 网络对抗技术 20165328 Exp5 MSF基础应用
目录 实验要求: 基础问题回答: 离实战还缺些什么技术或步骤? 实验内容: Exp5-1 主动攻击实践:实现ms08_067(失败) 实现ms17_010_eternalblue(成功) Exp5-2 ...
- C#控制台或应用程序中两个多个Main()方法的设置
大多数初级程序员或学生都认为在C#控制台或应用程序中只能有一个Main()方法.但是事实上是可以有多个Main()方法的. 在C#控制台或应用程序中,在多个类中,且每个类里最多只能存在一个Main() ...
- JavaScript判断各种数据类型
typeof ,只可判断部分数据的数据类型 数字 字符串 布尔值 undefined function Object.prototype.toString.call() , 通用 function e ...