lable  

最近公司有一个外包项目需要在不能连外网的情况下部署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
posted on   lable  阅读(2495)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
 
点击右上角即可分享
微信分享提示