前端部署

为什么使用nvm

我们可能需要在服务器部署多个前端项目,而不同的项目所使用的node版本又是不一样的,不同版本的node的兼容性是不一样的。这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,而nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换。

项目根目录

1.使用Dockerfile构建镜像

# 依赖centos环境
FROM centos:latest

#安装vim、git和nvm环境
RUN yum -y update \
    && yum -y install vim \
  && yum -y install git \
  && git --version \
  && cd ~/ \
  && git clone https://github.com.cnpmjs.org/nvm-sh/nvm.git .nvm \
  && cd ~/.nvm && git checkout v0.35.3 \
  && echo "source ~/.nvm/nvm.sh" >> ~/.bashrc && source ~/.bashrc

2.编写初始化脚本,初始化docker容器

将“ /root/project ”目录(项目统一放置文件夹,位置可更换)映射进容器

#!/bin/bash

# 镜像名字
IMAGE_NAME=centos_git_nvm

# docker 容器名字或者jar名字,这里都命名为这个
SERVER_NAME=centos_git_nvm_node

#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [init]"
    exit 1
}

#初始化——构建镜像和容器(在宿主机执行)
init(){
  #容器id
  CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
  #镜像id
  IID=$(docker images | grep "$IMAGE_NAME" | awk '{print $3}')
  # 构建docker镜像
  if [ -n "$IID" ]; then
    echo "Exit $IMAGE_NAME image,IID=$IID"
  else
    echo "NOT exit $IMAGE_NAME image,start build image..."
    # 根据项目个路径下的Dockerfile文件,构建镜像
    docker build -t $IMAGE_NAME .
    echo "$IMAGE_NAME image has been builded"
  fi

  if [ -n "$CID" ]; then
      echo "Exit $SERVER_NAME container,CID=$CID.   ---Remove container"
      docker stop $SERVER_NAME   # 停止运行中的容器
      docker rm $SERVER_NAME     ##删除原来的容器
  fi

  # 构建容器
  echo "$SERVER_NAME container,start build..."
  # 运行容器
   # --name 容器的名字
   #   -d   容器后台运行
   #   -p   指定容器映射的端口和主机对应的端口
   #   -v   将主机的目录挂载到容器的目录中(不可少)
  docker run -e TZ="Asia/Shanghai" -id --name $SERVER_NAME -v /root/project:/project $IMAGE_NAME
  echo "$SERVER_NAME container build end"
}


#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "init")
    init
    ;;
  *)
    usage
    ;;
esac

二、拉取代码

邮箱:nmvomvqozznjecjc
/root/project
拉取代码

cd /root/project
git clone 项目clone地址

1.运行shell脚本

bash portal.sh init

2.检查

# 如果有sh命名的镜像,说明构建成功
docker images

# 如果有sh命名的容器,说明容器启动成功
docker ps

3.进入容器安装node

# 进入容器
docker exec -it centos_git_nvm_node bash
# 查看可用node版本
nvm list-remote
# 安装node,以安装v14.1.0为例
nvm install v14.1.0

4.在容器中进入项目目录

cd 映射的项目目录(/project/项目名)
npm install
npm run build

打包完毕

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐