docker快速打包部署脚本(使用脚本一键打包并上传docker镜像的实现代码)
类别:服务器 浏览量:1243
时间:2021-11-03 15:55:06 docker快速打包部署脚本
使用脚本一键打包并上传docker镜像的实现代码笔者搞了一年多微前端项目,一个团队管理十个微应用,换成docker镜像部署后,发布操作一下从原来的脚本直连服务器的1分钟变成了几十分钟,尤其上传每个应用到各自的阿里云仓库。这里就再写个脚本一键打包docker镜像并上传阿里云。
本文只讲怎么制作一个脚本帮助去减轻开发人员负担,关于docker-compose的配置见: 使用各种姿势舒服的部署微前端项目(上:打包与上传)
效果图 直接上代码/** * @name docker镜像打包上传脚本 * @author weilan * @time 2021.02.22 */ const fs = require('fs'); const path = require('path'); const util = require('util'); const { log } = require('../utils/log'); const exec = util.promisify(require('child_process').exec); const sub_app_ath = path.resolve(); let sub_apps = fs.readdirSync(sub_app_ath).filter(i => /^subapp|master/.test(i)); const inquirer = require('inquirer'); // 用于命令行交互 /** * @name 命令行交互配置项 */ const question = [ { type: 'confirm', name: 'dist', message: '是否需要打包前端静态资源?', }, { type: 'confirm', name: 'env', message: '请选择是否需要打包成不联网的内网部署', when: function (answers) { // 当answer为true的时候才会提问当前问题 return answers.dist } }, { type: 'checkbox', name: 'apps', message: '请选择要发布的模块', choices: sub_apps, validate: function (val) { if (val.length) { // 校验 return true; } return "选择不能为空"; } }, ] /** * @name 根据命令交互配置结果做逻辑处理 */ inquirer.prompt(question).then(async (answer) => { let subApps = answer.apps; let buildScript = answer.env ? 'yarn build --Intranet' : 'yarn build'; let needDist = answer.dist; let now = +new Date(); // 登录阿里云 const { error: loginError } = await exec('docker login --username=哈哈哈 --password=嘿嘿 registry.cn-zhangjiakou.aliyuncs.com'); if (loginError) { log.red(loginError, '登录镜像中心失败') return; } console.log(`开始依次处理 ${JSON.stri.jpg" alt="docker快速打包部署脚本(使用脚本一键打包并上传docker镜像的实现代码)" border="0" />
实现思路和注意事项
- 首先考虑命令行交互的方式,将需要做的配置以选择的方式让开发人员确认,最后选择要发布的模块
- 提前登录阿里云账号
- 这里可以选择并发执行所选全部模块,但是这样日志输出会无序,且电脑压力极大会暂时死机;因此这里我用依次处理的方式
- 打包所选模块的前端静态资源
- 执行docker-compose build xxx 打包所选模块镜像
这里有个需要注意的点,因为是工具函数处理,每个模块的路径由node读取,因此你的模块名和docker-compose.yml里的服务名、容器名最好都一致;另外注意你的镜像打包后是你docker-compose.yml外的根目录下划线连接你的docker-compose服务名,因此你的阿里云镜像仓库命名最好和这个组合后镜像名一致;以上都是为了方便工具函数能够通用处理各个模块镜像。
- 制作镜像标签。这里我会制作一个本次发布时间戳的版本和一个lastet版本,前面方便回退,后面方便运维部署时无需关心标签版本。也可以拉取git tag来做镜像的tag。
- 制作镜像后上传至阿里云镜像中心
您可能感兴趣
- docker中的mongodb(Docker mongoDB 4.2.1 安装并收集springboot日志的步骤详解)
- docker测试环境搭建(docker环境搭建JMeter+Grafana+influxdb可视化性能监控平台的教程)
- docker镜像怎么用(Docker和镜像的操作方法)
- 用docker搭建redis集群(docker实现redis集群搭建的方法步骤)
- docker安装nginx如何配置(docker部署nginx并且挂载文件夹和文件操作)
- docker只有localhost可用(浅谈Docker如何自定义host文件)
- docker-compose查看服务状态(Docker+DockerCompose封装web应用的方法步骤)
- 如何增大docker内存使用(docker 内存监控与压测方式)
- django框架教程第100讲(详解Django+Vue+Docker搭建接口测试平台实战)
- centos装docker稳定吗(Centos8无法安装docker问题的解决方法)
- docker清理脚本(Docker 清理的常用方法及问题)
- 如何查看本机docker的安装目录(使用rpm安装指定版本docker1.12.6的详细步骤)
- docker怎样安装mysql8(docker-compose安装db2数据库操作)
- docker如何解绑容器(如何进入、退出docker的container实现)
- docker配置私有仓库(docker私有库的搭建实现)
- docker安装部署及使用(docker在linux上的安装部署实例讲解)
- 盘点那些年让人称奇的年终奖 最后一个赢辣条毫无悬念(盘点那些年让人称奇的年终奖)
- 你还没有升职吗 他竟因为几套激励理论,升职了(你还没有升职吗)
- 某知名企业绩效管理体系及薪酬分配体系操作手册(某知名企业绩效管理体系及薪酬分配体系操作手册)
- 职场人改不掉这4个习惯,只会越混越穷,一辈子也翻不了身(职场人改不掉这4个习惯)
- 华为 联想等46家公司笔试面试题,涉及各行各业,建议收藏(联想等46家公司笔试面试题)
- ()
热门推荐
- python函数基本操作(Python定义函数功能与用法实例详解)
- python零基础入门详细教程(Python零基础入门学习之输入与输出)
- mongodb查询
- phpredis怎么设置队列(php使用lua+redis实现限流,计数器模式,令牌桶模式)
- laravel 权限管理(修改Laravel自带的认证系统的User类的命名空间的步骤)
- python ssh登录服务器(python利用跳板机ssh远程连接redis的方法)
- laravel怎么查询信息过滤(laravel多条件查询方法and,or嵌套查询)
- html5和css3最新特性(html5中使用hotcss.js实现手机端自适配的方法)
- 如何选择适合自己的云服务器(选择云服务器配置需要注意什么?)
- 腾讯云linux服务器登录(腾讯云服务器Linux系统怎么挂载磁盘?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9