使用华为云服务一键构建部署发布前端和Node.js服务
如何使用华为云服务一键构建部署发布前端和Node.js服务
构建部署,一直是一个很繁琐的过程
作为开发,最害怕遇到版本发布,特别是前、后端一起上线发布,项目又特别多的时候
例如你有
10
个项目,前后端都要同时发布,那么就需要多次合并代码、构建,重复很多动作..而且还要去关心构建机器环境是不是变了?配置是否能扛住同时构建多个应用,人为的操作次数多了,就很难保证万无一失那这种局面怎么破? 是不是要考虑从技术角度来提效? 假如我把所有的构建、发布都迁移到云端,可以一键
push
代码,然后自动完成构建,我只要执行一个命令就可以完成部署,又不需要关心机器配置和环境变化,那我们的工作效率是不是可以大大提升?
我之前的构建发布流程
之前我是使用
Travis CI
和gitHub
以及docker-compose
结合进行一键代码push
构建发布但是有一个很明显的问题,
gitHub
和Travis
这两个平台是完全独立的,特别是我代码托管在gitHub
上,有时候访问速度还很慢,更要命的是没有在一个平台上形成完整的链路闭环于是我找了很多个平台,最终发现,
华为云
可以满足我的需求,既可以代码托管,也有可配置的自动化构建流程,而且访问速度快,纯中文界面友好
新建项目 & 迁移到华为云
像我们前端和
Node.js
都是有一些脚手架,例如React
这种框架,就有很多脚手架可以一键生成项目模板,让你不再关心工程化配置的问题,华为云的developer
模块也提供了这个功能image.png
选择想要的模板,像我选择的是
React
+express
模板,10秒钟左右就生成好了,此时就可以在我的模板产物中看image.png
此时下载压缩包,解压运行以下命令即可开始开发
npm run install-all npm run dev
新建项目时候,我们可以选择上面这种模式快速根据模版生成代码,但是我今天是要把我的代码从
gitHub
迁移到华为云上托管,然后在华为云上完成整个开发流程的闭环
将我gitHub
仓库代码导入到华为云托管
进入华为云
devcloud
模块,输入想要导入的gitHub
仓库地址和账号密码(如果需要),然后开始导入,大约耗时30S
此时,在本地生成
git ssh
,将公钥放置到华为云上image.png
我们此时可以点击代码仓库,进去就可以看到仓库详情了(
纯中文界面,真的友好
)image.png
在本地使用以下命令即可完成
clone
和启动
`git clone remoteurl
cd your projectName
npm install
npm run dev
`
以上完成了代码迁移,目前我们代码已经托管到
华为云
上,为了完成整套研发环节的闭环,我们需要将构建、发布都迁移到华为云鲲鹏服务器
上
改变我的构建策略
我之前是基于
gitHub
和Travis CI
和docker-compose
完成一键push
代码,然后一键完成发布,现在要在华为云
上实现一套自动化构建流程
构建策略适配难度极低,远超我的想象
我的项目是一个前端基于
React
,后端基于Node.js
的express
框架,跟华为云的devstar
的模板非常像如何设计这个任务流?
编写任务流
基于项目,新建编译构建任务
image.png
编写任务流任务流,所谓任务流,就是完成一个,然后接着下一个,华为云这里比较贴心,根据不同的环境进行了区分环境,不像传统的服务器,你还要去装
docker、node.js
等等这些(PS:
任务新建后可以修改任务~)
这里默认使用了华为的镜像源仓库,解决了因为环境配置问题导致下载慢的问题~
如何编写任务流?
以我的一个资料网站项目为例子,基于
docker-compose
发布,前后端都打包在一个镜像中首先代码
push
后,构建任务不一定需要马上执行,而且我的推送次数可能很频繁,此时我可以调成定时任务,还能限制次数(真的很贴心)-
image.png
编写dockerfile
此时先编写
dockerfile
文件,用于docker
,基于Node.js 12.16.3
版本的镜像,指定端口
#引用镜像 FROM node:12.16.3 #执行命令,创建文件夹 RUN mkdir -p /usr/www WORKDIR /usr/www COPY . /usr/www RUN npm run build #配置环境变量 ENV HOST 0.0.0.0 ENV PORT 8080 #定义程序默认端口 EXPOSE 8080 #运行程序命令 CMD ["node","./server/index.js"]
此时可以想象,我们推送代码后(
可以选择什么分支
),根据配置定时自动构建,然后可以通过接口或者手动借助docker-compose
命令进行一键更新发布-
image.png
简单三个命令,完成
docker-image
的制作和push
(具体参数可以参考提示)-
image.png
首先登陆
docker
,然后build
打包镜像,最后push
即可完成构建这一步,我们本地完全是无感知的~也不需要考虑配置和环境的问题此时我们手动触发构建任务(像我们公司项目特别大,一台
4核8G
的机器可能就扛不住几个项目同时构建,在这里就不用担心)-
image.png
等待一段时间后,发现命令执行完成,
docker
镜像已经发布完成-
image.png
发布
两种手段
通过
ssh
连接华为云服务器,执行编写好的docker-compose
文件通过接口带
token
方式(有权限的人才可以发布)调用,执行docker-compose
命令,达到发布目的我们重点关注第一种,通过
ssh
连接到华为云鲲鹏服务器
![image.png](https://bbs.huaweicloud.com/remoteFs/blog/upload/image/20200817/1597671067549045282.png "1597671067549045282.png")
输入用户和
ip
地址后,ssh
连接成功,编写docker-compose
文件
version: "3.7" services: redis: image: redis:3 container_name: redis hostname: redis command: redis-server /usr/local/etc/redis/redis.conf --requirepass huaweiapp666 volumes: - ./redis/redis.conf:/usr/local/etc/redis/redis.conf ports: - "6379:6379" huaweiapp: image: jinjietan/huaweiapp:latest ports: - "8080:8080" restart: on-failure
执行命令,拉取镜像
docker-compose pull
拉取完成后,运行
docker-compose
docker-compose up -d
启动成功,输入域名,即可访问到我的网站了,完成这个迁移和整套开发构建流程的闭环,仅仅用了1个小时不到
感受
华为云从开发者角度出来,项目模板一键生成,定时构建任务,任务流的定制化处理这些,非常人性化,大大降低了开发运维门槛,形成整套研发构建流程的闭环
我司也正在准备购买迁移华为云产品,所有托管、构建发布都放在云端完成闭环
相信你通过这篇文章,也可以快速的将你的代码托管、构建发布快速迁移到
华为云鲲鹏服务器
上
使用华为云服务一键构建部署发布前端和Node.js服务相关推荐
- 实践案例丨教你一键构建部署发布前端和Node.js服务
如何使用华为云服务一键构建部署发布前端和Node.js服务 构建部署,一直是一个很繁琐的过程 作为开发,最害怕遇到版本发布,特别是前.后端一起上线发布,项目又特别多的时候. 例如你有10个项目,前后端 ...
- 年度发布|华为云2021应用构建技术实践精选集,免费下载
摘要:围绕极简工具和技术使能,精心遴选云原生.大数据.数据库.AI.物联网等领域的典型云上场景化开发实践,跑通云上开发. 本文分享自华为云社区<年度重磅!华为云2021应用构建技术实践精选集,免 ...
- 华为云宣布将在全球范围内推出区块链服务
点击上方"蓝色字"可关注我们! 暴走时评:根据官方声明,华为公司的云服务部门华为云于日前宣布,将推出区块链服务(BCS).今年早些时候,华为公司在中国推出了用于商业用途的区块链服务 ...
- 基于华为云的Django网站部署
学习笔记,仅供参考,有错必纠 参考自:Xshell远程连接服务器:win10 开启ssh server服务 远程登录 文章目录 基于华为云的Django网站部署 远程登录华为云 Xftp+Xshell ...
- 华为云平台web架构部署
项目一 华为云平台web架构部署 软件环境:华为云平台 项目需求:随着技术的不断发展和用户对网站功能性的需求不断提高,如今 网站项目的设计已经不能再仅仅简单地利用静态html文件来实现, ...
- 无线网络的胖瘦AP都过时了你知道现在的华为云AP是怎么部署的吗?
无线网络的胖瘦AP都过时了你知道现在的华为云AP是怎么部署的吗? 2018-12-25 18:35 胖AP?瘦AP?云AP?看到这个题目,大家估计会有疑惑,难道IT工程师都是外貌协会的?为什么AP会有 ...
- 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计
转载需经本人同意且标注本文原始地址:https://zhaomenghuan.github.io/blog/nodejs-eggjs-usersytem.html 前言 近来公司需要构建一套 EMM( ...
- 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计 1
前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...
- NGINX配置基于Node.js服务的负载均衡服务器
NGINX配置基于Node.js服务的负载均衡服务器 本部署指南说明了如何使用NGINX开源和NGINX Plus在Node.js应用程序服务器池之间平衡HTTP和HTTPS通信.本指南中的详细说明适 ...
最新文章
- 某大厂程序员吐槽:老家亲戚狮子大开口,竟跟自己借八十万给儿子买房!
- Tenka1 Programmer Contest C - Align
- 使用Javap分析Java代码里的static final的工作原理
- Java中的内存泄露的几种可能
- python语言学完后学什么_学完Python语言可以做什么?发展前景怎么样?
- 19年的华为手机还能搭载鸿蒙吗,2019年华为手机出货或超2.15亿部 鸿蒙系统最快10月首秀...
- java URL连接ftp_java – URLConnection FTP列表文件
- catia需要java插件,catia中的带分析
- ubuntu14.04安装V-REP和用户使用手册
- 机器学习入门实战——线性支持向量机实战digits数据集
- 机器学习基石 作业0
- 简单OCX控件的开发
- windows10远程桌面 删除IP记录
- 25个常用Matplotlib图的Python代码,干货收藏!
- 史上最详细Win10系统装成Win7系统教程
- mysql数据库性能优化—my.cnf详解
- linux gtx1070 黑屏,小编上阵排雷!GTX 1070美光显存门刷BIOS修复教程
- 用java代码实现,使用5升和6升的水杯装出3升的水
- 每天学一点英文:Espresso 20210817
- 字符串生成二维码并且批量打包下载
热门文章
- ArangoDB压测小记
- [FAQ11783][NW]MVNO忽略国内漫游(ignore national roaming)
- RGB TO ARGB
- html链接加入qq群,获取QQ群加群链接
- Amazon Review Dataset数据集介绍
- 关于代码编辑器IDEA突然不能编辑文件的原因
- 什么人适合学习嵌入式开发?
- springboot毕设项目社区分享系统的实现与分析48ig8(java+VUE+Mybatis+Maven+Mysql)
- nginx防御简单CC攻击的方法
- 《汇编语言》学习笔记