docker:打包node+npm+pm2运行环境镜像
最近公司有一个外包项目需要在不能连外网的情况下部署node项目到甲方公司内部。直接使用node官网的安装包可以获得node运行环境,但像pm2这种工具要离线装就会比较费劲,所以最终选择了使用docker容器来简化这部分工作。
软件版本:
当前操作系统:macos 10.14.6
docker:19.03.8
系统镜像:centos:7.6.1810
这里使用两种打包方式:
一、直接启动镜像联网安装打包离线镜像
1.命令行进入容器
docker run -it centos:7.6.1810 /bin/bash
2.搭建node运行环境
# 创建项目目录
mkdir -p /data/node
cd /data/node
# 安装node二进制包
curl https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gz > node-v10.15.3-linux-x64.tar.gz
tar -zxvf node-v10.15.3-linux-x64.tar.gz
rm -rf node-v10.15.3-linux-x64.tar.gz
mv node-v10.15.3-linux-x64 /usr/local/nodejs
ln -s /usr/local/nodejs/bin/node /usr/local/bin/
ln -s /usr/local/nodejs/bin/npm /usr/local/bin/
# 切换npm源
npm config set registry https://registry.npm.taobao.org --global
npm install -g pm2
# 设置pm2运行路径
echo "export PATH=$PATH:/usr/local/nodejs/bin" >> ~/.bashrc
#设置时区
echo "export TZ=Asia/Shanghai" >> ~/.bashrc
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
source ~/.bashrc
#退出容器
exit
3.根据容器生成镜像
docker docker commit -m "node_env" -a "lablelan" 容器id node_env
# 可以看到node_env已经打包成镜像
docker images
二、 通过dockerfile生成镜像
1.当前目录下创建Dockerfile文件写入
FROM centos:7.6.1810
RUN mkdir -p /data/node
WORKDIR /data/node
RUN curl https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gz > node-v10.15.3-linux-x64.tar.gz
RUN tar -zxvf node-v10.15.3-linux-x64.tar.gz && rm -rf node-v10.15.3-linux-x64.tar.gz
RUN mv node-v10.15.3-linux-x64 /usr/local/nodejs && ln -s /usr/local/nodejs/bin/node /usr/local/bin/ && ln -s /usr/local/nodejs/bin/npm /usr/local/bin/
RUN npm config set registry https://registry.npm.taobao.org --global && npm install -g pm2 && echo "export PATH=$PATH:/usr/local/nodejs/bin" >> ~/.bashrc
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
2.使用dockerfile文件生成镜像
docker build -f ./Dockerfile -t node_env
# 等待docker构建完成后可看见node_env镜像
docker images
导出镜像包
docker save -o node_env.tar node_env
docker:打包node+npm+pm2运行环境镜像的更多相关文章
- Centos7安装Docker 基于Dockerfile 搭建httpd运行环境
		Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ... 
- windows8 使用docker创建第一个nodejs运行环境
		现在公司电脑使用的是windows8操作系统,如果想要运行docker,只能安装Docker ToolBox 关于安装Docker ToolBox,请查看文章<windows8安装docker( ... 
- Linux下用Docker部署接口安全的运行环境
		背景:MySQL数据库运行在宿主机上(Linux) 需求:Redis.服务.页面分别运行在独立的docker中,并处于同一网络,容器内部重要目录要挂载在物理目录,保证数据安全 方法: 一.设置网络环境 ... 
- docker之配置TensorFlow的运行环境
		Docker是一种 操作系统层面的虚拟化技术,类似于传统的虚拟机.传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程:而容器内的应用进程直接运行于宿主的内核,容 ... 
- CentOS 下安装 Node npm pm2
		1.node安装 参考:http://blog.csdn.net/haidaochen/article/details/7257655 下载,你需要在https://nodejs.org/en/dow ... 
- docker下PHP+Nginx+HHVM运行环境
		Dockerfile 准备开始,我们创建一个 Dockerfile —— Dockerfile 包含如何创建所需镜像的指令. FROM centos:centos6MAINTAINER Mike ... 
- 搭建node js的运行环境。
		第一步:首先安装一个NVM,就是一个node的版本管理器. nvm的下载地址::https://github.com/coreybutler/nvm-windows/releases,我选择下载的是n ... 
- win7搭建node+npm+bower的环境
		原文的地址:https://my.oschina.net/JeeChou/blog/219699 Windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native ... 
- 用Docker打包Python运行环境
		虽然Docker作为部署环境打包镜像的工具,和我的科研并没有直接的关系.但我觉得在项目中运用Docker来打包环境依赖也可以大大提高工作效率,于是准备专门学习一下Docker. 1. Docker基础 ... 
随机推荐
- Mysql-5.7主从部署-yum方式
			一.环境准备 # rpm -qa |grep mariadb |xargs yum remove -y # setenforce 0(临时关闭),(selinux配置文件:SELINUX=disabl ... 
- Elasticsearch(2) 数据搜索
			本文介绍如何在Elasticsearch中对数据进行搜索. 1.简述 在Elasticsearch中的搜索中,有两类搜索: queries aggregations 区别在于:query可以进行全文搜 ... 
- ApacheCN JavaScript 译文集(二) 20211123 更新
			使用 Meteor 构建单页 Web 应用 零.前言 一.制作 Meteor 应用 二.构建 HTML 模板 三.存储数据和处理集合 四.控制数据流 五.使我们的应用与路由通用 六.保持会话状态 七. ... 
- VUE3 之 作用域插槽 - 这个系列的教程通俗易懂,适合新手
			1. 概述 破窗效应告诉我们: 当一个建筑物窗户的玻璃完好无损时,很少有人想去破坏它,当有一个人破坏了一块窗户的玻璃,其他窗户的玻璃也很快会被人破坏. 同理,一个很干净的地方,人们不好意思去丢垃圾,但 ... 
- select  级联选择
			转载请注明来源:https://www.cnblogs.com/hookjc/ <script language="javascript"> <!-- ... 
- JVM学习六:堆分析
			一.内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 public static void main(String args[]){ ArrayList<byte[]> li ... 
- php include,require,include_once,require_once 的区别
			include(),require(),include_once(),require_once()作用都是包含并运行指定文件,但是使用场景又有很大区别. 1.include()和require()的区 ... 
- NSMutableString常用方法
			1.NSMutableString常用方法 - (void)appendString:(NSString *)aString; 拼接aString到最后面 NSMutableString *strM ... 
- CSS网页使用Font Awesome图标字体时,css定义 content 属性
			原文地址: http://blog.csdn.net/laurel_y/article/details/70842157 
- Docker consul的容器服务更新与发现(超详细配图)
			Docker consul的容器服务更新与发现 1.概述 2.部署 1.概述: (1)什么是服务注册与发现: 服务注册与发现是微服务架构中不可或缺的重要组件.起初服务都是单节点的,不保障高可用性,也不 ... 
