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)

大家都在看

  • 怎样在 Ubuntu 16.04 强制 APT 包管理器使用 IPv4 | Linux 中国

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月24日
    0232
  • 13.Github使用

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月30日
    0257
  • 插入排序算法C语言实现

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年11月7日
    0168
  • 服务器监控-TOP命令详解

    用jmeter进行性能测试的时候,top命令是最方便可用的服务器监控命令,可以看出服务器的当前负载量,CPU占用率,内存占用率等重要信息,下面详细解说一下top命令里面的各个指标。…

    Linux 2023年5月27日
    057
  • github fork项目和原项目同步

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月30日
    0141
  • 深入Go Map的使用技巧

    原文链接:https://www.zhoubotong.site/post/60.html之前写过一篇文章,Go map定义的几种方式以及修改技巧,今天发现还可以深入探讨下开发中容…

    Linux 2023年6月6日
    058
  • windows下设置redis开机自启动

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年9月14日
    0175
  • SpringBoot的文件上传&下载

    前言:不多BB直接上代码 文件上传 pom依赖添加commons-io <!– 上传/下载jar https://mvnrepository.com/artifact/co…

    Linux 2023年6月14日
    051
  • 命令序列使用技巧

    使用控制字符来控制命令的执行方式 控制字符:(;,&&,||,&) & :开启一个子shell,并在后台执行; ; :可以把多个命令组合,但多个命令…

    Linux 2023年6月7日
    053
  • ShardingSphere-proxy-5.0.0建立mysql读写分离的连接(六)

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年11月7日
    0136
  • thinkphp5简单使用redis缓存

    csharp;gutter:true; connect("127.0.0.1","6379");</p> <pre>…

    Linux 2023年5月28日
    057
  • Linux Buffers和Cached的区别(转)

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月24日
    0194
  • 爬取与数据存储

    ch5. 数据存储 文件存储 JSON文件存储 关系型数据库存储 Mysql 1. JSON文件存储 1. JSON中的对象和数组 *对象 ​ 格式为 {key1:value1, …

    Linux 2023年6月7日
    040
  • Ubuntu安装scrcpy完成手机投屏和控制

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月26日
    0246
  • Spring 进入Controller前参数校验

    在进入Controller前完成参数的校验,针对对象参数 分为两个验证方式 (1)直接使用已定义的校验方式 1、在需要进行校验的属性上增加校验类型注解 import java.ut…

    Linux 2023年6月7日
    043
  • Redis 服务监控 redis-faina 命令查看 和 redis-live 界面查看

    Redis现在在很多公司中应用已经很广泛了,但是如何监控redis,实时的观察redis的性能,下面就关于Redis的常用监控介绍一下。 一、使用redis自带的info命令和mo…

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