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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM