zoukankan      html  css  js  c++  java
  • 结合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登录远程服务器,并执行后面的命令,拉取镜像,并构建容器。
    
  • 相关阅读:
    VueBlog
    java 代理模式
    集合框架
    面试题
    java 多线程
    网络编程
    HTTP
    MAVEN
    Redis高级
    深入浅出--梯度下降法及其实现
  • 原文地址:https://www.cnblogs.com/tian874540961/p/11915599.html
Copyright © 2011-2022 走看看