结合docker发布前端项目(基于npm包管理)的shell脚本 结合docker发布前端项目(基于npm包管理)的shell脚本


本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记。

注:基于linux操作系统

目前主流的前后端分离的项目中,常常在部署上线这个环节会遇到很多麻烦,这里我使用了docker进行部署,这段shell脚本我放在前端工程目录下,每次要部署上线时运行这个文件,可以很方便的帮助上线。注解都写在了代码中。
#!/usr/bin/env bash

// 以下用变量存放一些配置信息
BUILD_PROFILE="prod"
PORT="7002"
LOGIN_COMMAND="login --username=... -p=... registry.cn-hangzhou.aliyuncs.com"
DOCKER_NAME="your_docker_name"
repo="registry.cn-hangzhou.aliyuncs.com/your_project/${DOCKER_NAME}:latest"
REMOTE_SERVER="root@100.100.100.100"
JOB_NAME=${DOCKER_NAME}

#编译
echo start to compile // 提示开始执行此段脚本
rm -rf dist  // 项目基于npm管理,打包后所有的资源都存放在dist文件中,这里清除上一次生成的文件
npm run build-${BUILD_PROFILE}  // 打包生产环境的代码

# Docker
echo Start to build docker...  // 开始构建docker镜像

cd ci  // 脚本放在ci目录下,进入该目录
rm -rf dist  // 删除上一次生成的文件
cp -rf ../dist .  // 将新生成的dist文件拷贝到ci目录下
docker build -t ${DOCKER_NAME} . // 开始构建镜像,Dockerfile文件在我另一篇博客中会有介绍
rm -rf dist // 构建完成后删除dist文件


docker ${LOGIN_COMMAND}  // 登录远程docker仓库
docker tag ${DOCKER_NAME} ${repo} // 打标签
docker push ${repo} // push到远程仓库

# Deploy
echo deploy to remote server...  // 开始发布

ssh ${REMOTE_SERVER}  " docker ${LOGIN_COMMAND}; docker pull ${repo}; docker rm -f $JOB_NAME || true; // docker run -d -p ${PORT}:80 --name ${JOB_NAME} ${repo};"
// 使用ssh登录远程服务器,并执行后面的命令,拉取镜像,并构建容器。