构建一个 预装 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 ...
随机推荐
- Python爬取指定重量的快递价格
目录 一.获取查询接口 二.获取相关数据 三.编写爬虫脚本 四.查看查询效果 背景:现在这个时代,快递横飞.我们想寄一个快递,给出的选择也是多种多样的(根据快递的大小.送达的时间.寄送的距离及价格.公 ...
- 在django中uwsgi的使用,以及安装
首先了解wsgi是一个python web服务器,uwsgi实现了wsgi所有的功能,性能稳定,效率高的服务器: 1.安装uwsgi pip install uwsgi 2.配置uwsgi [uwsg ...
- python2 使用pip安装psycopg2出现错误:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-mvzdNj/psycopg2/
公司业务需求,开发语言python2,需要使用数据库:postgresql,需要安装模块psycopg2这个模块, 使用pip install psycopg2 报错: Command "p ...
- Django—常用功能
索引 一.静态文件 二.中间件 三.Admin站点 3.1 列表页选项 3.2 编辑页选项 3.3 重写模板 四.上传图片 4.1 在管理页面admin中上传图片 4.2 自定义form表单中上传图片 ...
- Snakes 的 Naïve Graph
题解: 首先分析一下这个问题 发现等价于是求n之内与n互素的数的个数,即欧拉函数 这个可以线性筛 但发现还应该减去$x^2==1$的情况 这个东西不是那么好处理 考虑用中国剩余定理拆 因为$p1^{a ...
- 西风 West Wind Html帮助构建器
https://helpbuilder.west-wind.com/ 示例文档: https://helpbuilder.west-wind.com/docs/_03101e5wp.htm
- __builtin_expect — 分支预测优化
1.引言 在很多源码如Linux内核.Glib等,我们都能看到likely()和unlikely()这两个宏,通常这两个宏定义是下面这样的形式. #define likely(x) __builtin ...
- python url参数转dict
from urllib import parse url='_from=R40&LH_BIN=1&_sop=13&LH_Complete=1&LH_Sold=1& ...
- net core EF 链接mysql 数据库
这个主要是一个demo.就在一个工程里面写的 安装MySql.Data.EntityFrameworkCore 增加DbContext 相当于程序与数据库的中间层 public class Ident ...
- 动态网页获取ajax,post方法,url里面不直接显示参数
记录一下,爬去ajax数据时,需要注意一下是post方法还是get方法,get方法就正常做就行了,但是post方法的话,需要这样,如下 a = requests.request('post',url) ...