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

Original: https://www.cnblogs.com/lablelan/p/15837410.html
Author: lable
Title: docker:打包node+npm+pm2运行环境镜像

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609259/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • redis 命令

    Redis是用C语言实现的,一般来说C语言实现的程序”距离”操作系统更近,执行速度相对会更快。 Redis使用了单线程架构,预防了多线程可能产生的竞争问题。…

    Linux 2023年5月28日
    084
  • linux–文件系统

    才开始接触linux是这样: 这个是shell界面 根目录下的文件 : linux在路径中不使用盘符;采用的是虚拟目录(根目录’/’ 就是一个虚拟目录) ,…

    Linux 2023年6月14日
    0105
  • Linux常用命令

    Linux常用命令 在学习瑞吉外卖项目课程中自己做的一个linux常用命令的小笔记便于以后复习使用,仅供参考。 文件目录操作命令 pwd:显示该目录或者文件的路径 ls命令 ls:…

    Linux 2023年6月7日
    091
  • 兼容各种浏览器的上下滚动代码

    直接切入正题 红色的表示为要注意统一的。 蓝色是表示要更改的。 内容高度一定要大于box1的高度否则不会滚动,本框架用的是phpcms,大家可根据自己的框架更改循环。 | {pc:…

    Linux 2023年6月13日
    094
  • Centos 7.x 线上安装 Kubernetes

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 安装依赖包 yum install -y conntrack ntpdate ntp ipvsadm ipset jq ipta…

    Linux 2023年5月27日
    0130
  • Redis是如何实现高性能的?

    Redis到底有多快? redis到底有多快,可以通过 redis-benchmark 脚本进行基准测试。redis官方的性能基准测试报告 Redis为什么这么快? redis之所…

    Linux 2023年6月7日
    0108
  • 编写radware的负载配置

    radware如何添加负载服务? 笔者在新添加radware的新负载服务的时候,是习惯去看下上一个负载服务的ID 和 节点服务的ID 号 分别是多少,主要是避免ID冲突,把其他服务…

    Linux 2023年6月8日
    0107
  • 【转】对于任意的非负整数,统计其二进制展开中数位1的总数

    问题: 对于任意的非负整数,统计其二进制展开中数位1的总数。 解决: 在看这篇之前可以先看看上述这篇,这篇主要讨论其优化问题。 常规解法: O(logn): 无非就是每次取其二进制…

    Linux 2023年6月7日
    092
  • Linux 0.11源码阅读笔记-文件管理

    Linux 0.11源码阅读笔记-文件管理 文件系统 生磁盘 未安装文件系统的磁盘称之为生磁盘,生磁盘也可以作为文件读写,linux中一切皆文件。 磁盘分区 生磁盘可以被分区,分区…

    Linux 2023年5月27日
    0101
  • 多个USB转串口设备区分方法

    当计算机或者其他USB主机上使用多个USB转串口设备时,会遇到多个串口无法与具体的串口设备对应起来的问题,包括更换不同USB端口串口序号发生改变,多个设备USB插拔顺序不同导致串口…

    Linux 2023年6月7日
    067
  • Linux C/C++ 获取进程号、线程号和设置线程名

    在Linux开发过程中,设计多线程开发时可以将进程和线程的 id 打印出来,方便开发调试和后期查问题使用,同时也包括设置线程名。 2.1 进程ID #include <uni…

    Linux 2023年6月7日
    0138
  • IDEA清空控制台以及Java中运行cmd命令实现清屏操作

    在网上有看到各种的实现方法,比如: Runtime.getRuntime().exec("cls"); &#x6216;&#x8005;&amp…

    Linux 2023年6月6日
    0135
  • zabbix 报表动作日志 报错”503“

    本文来自博客园,作者:xiao智,转载请注明原文链接:https://www.cnblogs.com/yuwen01/p/16216868.html Original: https…

    Linux 2023年6月13日
    0111
  • python实现Mysql数据库批量新增数据

    一、批量插入数据的场景 二、插入数据的工具选择 三、选择Python进行批量插入 Python实现批量插入Mysql数据库数据 一、批量插入数据的场景 在进行数据压力时需要进行大数…

    Linux 2023年6月14日
    089
  • linux命令之tar 解压 压缩

    tar(全称:tape archive )命令用于备份文件。tar 是用来 创建或者 还原备份文件的工具程序,它可以加入,解开备份文件内的文件。tar linux说明 tar [&…

    Linux 2023年5月27日
    084
  • 账号分享

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月8日
    0119
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球