Docker on 华为云DevCloud

网友投稿 605 2022-05-30

1 文章目的

本文主要帮助想要或者正在使用容器部署服务的用户,如果将他们的应用部署通过软件开发服务部署在华为云上。

2 概述

2.1 Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

2.2 华为软件开发服务DevCloud

官网入口:http://www.huaweicloud.com/devcloud/

华为软件开发服务(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研发工具为一体的一站式云端DevOps平台,面向开发者提供包括项目管理,代码托管,流水线,代码检查,编译构建,测试管理,移动应用测试,部署,发布,CloudIDE,研发协同等基础功能的研发工具服务。覆盖软件开发全生命周期,支持多种主流研发场景,让软件开发更高效。

应用软件开发服务的流水线功能可以帮助开发者实现一键自动化开发部署,其中需要应用到项目管理,代码仓库,代码检查,编译构建,发布,部署等功能。

项目管理

软件开发服务提供基于Scrum和精简两种模式的项目管理服务,用户可以在项目管理中进行项目规划,工作项跟踪,文档及百科管理等工作。并可以通过预定义好的燃尽图表等常用报表,对项目进行实时监控,及时掌握项目进度,提前管控风险。

代码仓库

在进行开发工作过程中,在华为软件开发服务的代码仓库中,新建一个云端代码仓库,然后通过本地git端将代码与云端托管仓库同步,通过本地IDE进行开发

代码检查

开发任务进程中,随时可以进入到华为软件开发服务的代码检查功能中,进行代码检查,新建代码检查任务,选择与项目匹配的代码检查规则进行代码检查。

在问题列表中查看代码检查结果,针对问题描述对问题进行修改,修改完毕后,再次执行代码检查任务,查看任务执行结果,形成代码质量改进闭环。

编译构建

通过代码检查任务,将代码问题都修复完毕后,我们开始进行编译构建工作。

本项目中,前端后端均采用云端编译构建进行打包构建,同时方便后续将代码直接应用自动化部署功能部署到云服务器中。

发布

华为软件开发服务提供4种类型发布仓库,前两种是远程Maven私仓,用于Maven类型构建过程中第三方依赖包的管理。第三个仓库是mirror镜像仓,镜像了一些构建过程中经常依赖的中央仓到后台,提升构建速度,体现云端构建的优势。我们本次demo中应用最后一个编译构建仓库,作为生成的软件包的版本归档管理仓库。

部署

当代码构建打包成功并归档到发布仓库后,可以进行部署工作。部署任务一共分为三部分工作,分别是主机授权,编辑模板,执行部署。

2.3 微服务云应用平台 ServiceStage

微服务云应用平台是面向企业的一站式PaaS平台服务,提供应用云上托管解决方案,帮助企业简化部署、监控、运维和治理等应用生命周期管理问题;提供微服务框架,兼容主流开源生态,不绑定特定开发框架和平台,帮助企业快速构建基于微服务架构的分布式应用

2.4 华为云服务

弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率。MySQL是全球最受欢迎的开源数据库之一,性能卓越,搭配LAMP,成为WEB开发的高效解决方案。 云数据库拥有即开即用、稳定可靠、安全运行、弹性伸缩、轻松管理、经济实用等特点,让您更加专注业务发展。

3 前提条件

3.1 华为云账号

华为云官网:http://www.huaweicloud.com

点击右上角“注册”注册华为云账号,此账号适用于所有华为云产品。

3.2 工程初始化文件

数据库以及数据初始化脚本(本文是mysql,bootdo.sql)

应用程序中间件以及工程源代码(本文是jdk,bootdo)

3.3 创建项目

创建项目

在华为云官网首页-产品-软件开发服务,进入华为软件开发服务首页。

点击右上角“新建”按钮新建项目

输入项目名称,选择开发流程,输入项目描述,点击“新建”按钮即完成了一个项目的创建。

3.4 创建代码仓库

首先在代码广场中搜索bootdo

然后点击fork图标

输入仓库名称,选择所属项目

如果想修改源代码可将新建的代码仓库clone到本地,然后修改后再提交

git的使用方式详见

https://bbs.huaweicloud.com/blogs/924542b3597311e89fc57ca23e93a89f

https://bbs.huaweicloud.com/blogs/af59e0d9490211e89fc57ca23e93a89f

3.5 Dockerfile

到这里工程源码准备完成。

3.6 Servicestage集群

需要创建Servicestage集群,在华为云官方网站下产品列表中选择微服务云应用平台https://www.huaweicloud.com/product/servicestage.html,点击立即使用,然后选择资源管理,点击新建如下图

填写基本信息后点击下一步,选择集群配置后点击购买,如下图

购买后等待5-10分钟后即可创建完成,到这里我们已经准备好了servicestage集群了。

Docker on 华为云DevCloud

3.7 Docker镜像

准备完servicestage集群后,我们就可以上传基础镜像了,这里的基础镜像指的是我们的工程需要用的MySql数据库,ubuntu的镜像,上传方式如下:

上传帮助文档:https://servicestage.huaweicloud.com/servicestage/?project=cn-north-1#/stage/softRepository/images/imagedetail/ninong6530/ll-org/mysql/pullpush

上传成功后,会将镜像显示在如下位置:

到这里我们已经将我们需要的镜像上传到了私有库中了。

3.8 搭建数据库服务

我们现在可以通过servicestage集群来创建我们的数据库服务了,在servicestage控制台的左侧菜单中点击应用管理,然后点击新建应用如图

选择容器应用后进入详细页面,如图

填写完基本信息后点击下一步进入镜像选择界面

选择我们之前上传的mysql镜像后点击确定,进入下一项设置

根据需要选择容器的配置后,展开高级设置--环境变量添加mysql的root密码,然后点击存储

这里的意思是设置mysql的数据文件存储在主机的哪个位置,可根据需要配置,本文这里配置的是/root/update/mysql/datadir,也可以自行设置,如下

登录主机后创建需要的目录,命令如下:

mkdir -p /root/update/mysql/datadir

配置完成后点击下一步进行访问方式配置,如下图

因为这个应用为数据库服务所以不需要外网访问,所以访问类型可以选择内部服务,后面的jar将要选择外部服务了,配置好端口的映射关系后点击下一步服务即可在1-5分钟内创建完成

这个时候我们cd到主机中的mysql/datadir目录下,即可看到我们之前通过docker push上来的数据信息了

再验证一下数据库服务是否成功Telnet 10.247.242.90 3306,

到这里数据库服务已经搭建完成,以后可通过servicestage控制台进行快速的停起更新与扩容操作。

4 研发场景概览

4.1 示例项目概述

1.项目名称:bootdo blog

2.项目简介:实现了博客论文的在线预览以及后台运维能工作。

3.项目类型:Java+mysql+h5的B/S架构的web项目

4.开发环境:IDEA,VSCODE

5.部署环境:ubuntu16.04 + mysql

6.部署方式:docker容器+devcloud+servicestage集群

4.2 通用客户场景

目前软件开发过程中可以使用一些免费或者付费的工具帮助我们更高效的进行软件开发,但存在以下缺点:

Ø 每个项目参与者必须同时使用多种工具,导致工作的遗漏和不能及时的更新。

Ø 安装类型的工具会面临版本更新升级的问题。

Ø 运维人员在系统发布时环境搭建难度大,准备工作比较多,容易出现纰漏导致系统不能顺利发布。

Ø 开发、测试、运维之间相互隔离,发现问题不能及时定位。

4.3 华为云服务方案总览

华为软件开发服务DevCloud为软件开发者提供即开即用的一站式云端DevOps平台,包括项目管理、代码托管、代码检查、云端构建、发布部署、流水线在内的端到端的软件开发工具,从各个环节提升软件产品的交付质量和速度。另外,华为云还为您提供丰富多彩的云计算产品。

5 代码管理场景

华为软件开发服务提供基于Git的代码托管仓库,仓库提供可视化的管理界面,软件开发者可将自己的软件工程代码上传到此仓库中进行代码托管。

代码同步

单击代码托管首页“设置SSH密钥”。进入“SSH密钥管理”页面。

单击“添加SSH密钥”,进入“添加SSH密钥”界面。

根据界面下方“SSH密钥帮助文档”说明生成对应密钥。输入标题,将生成公钥粘贴到“密钥”文本框里,点击“新建”即完成了SSH密钥的添加。

单击代码托管首页“新建仓库”,进入“新建代码仓库界面。

选择“普通新建”,输入代码仓库名称及描述,点击确认即创建了一个空的云端代码仓库。

代码托管首页展示创建的代码仓库列表

点击代码仓库对应的SSH,复制仓库SSH地址。

将代码仓库克隆到本地。

$ git clone git@codehub.devcloud.huaweicloud.com:00de687ca8da4a5d8bcf7f5b55969c30/bootdo-docker.git

然后进行项目代码的开发(本文采用的是一个开源的Demo代码)。

再将代码提交、推送到云端仓库。

$ git add *

$ git commit -m "init"

$ git push origin master

代码仓库

在代码托管首页面点击创建的代码仓库,可以进入到代码仓库里,这里支持文件在线编辑,仓库提交记录,代码贡献度统计等多种功能,满足各类开发者的需求。

6 代码质量评估场景

可在线进行代码静态检查、代码架构检查、代码安全检查、编码问题检查、质量评分、代码缺陷改进趋势分析,辅助用户管控代码质量

代码质量评估操作指南:

产品介绍 基础操作 进阶操作

代码质量检查

在“检查”服务下的“任务”中可以看到项目下的代码检查任务,点击“新建任务”,进入到新建代码检查任务界面。

输入任务名称,选择需要检查的代码仓库地址,选择想要检查出的严重问题规则集。

进入到新创建的检查任务中,点击“启动任务”

任务进入“检查中”状态,并动态显示检查进度。

代码质量评估报告

检查任务执行结束,生成详细的代码质量报告,评估代码质量。

代码修改建议

在问题列表中查看代码检查结果,针对每个问题都会给出详细的问题描述和修改建议,修改完毕后,再次执行代码检查任务,查看任务执行结果,形成代码质量改进闭环。

7 持续交付(CI/CD)场景

7.1.1 编译构建

在devcloud的控制台界面点击构架发布下的编译菜单,在右上角点击新建一个编译任务,如图

填写基本信息之后点击下一步

选择代码仓库后点击下一步

选择构建工具与构建环境后点击下一步

这里重点说明下最后一项中的dockerfile位置,指的是我们之前在代码仓库中上传的dockerfile的相对路径,./Dockerfile,devcloud会根据这个文件创建出用户需要的docker镜像,并且将工程包上传到用户在dockerfile中指定的位置。然后点击下一步

选择执行计划后开始编译。

编译成功后会在软件发布仓库下生成一个软件包,可以手动下载,还会在servicestage中的软件中心-镜像仓库下生成我们需要的docker镜像,这个镜像就是devcloud根据dockerfile以及代码编译后的程序包自动生成的镜像,可用于容器部署,后面会讲解如何使用

当看见了这个镜像信息后就代表着我们编译已经成功了。

7.1.2 发布

软件仓库

软件开发服务提供4种类型的发布仓库,前两种是远程Maven私仓,用于Maven类型构建过程中第三方依赖包的的管理。第三个仓库是mirror镜像仓,镜像了一些构建过程中经常以来的中央仓到后台,提升构建速度,体现云端构建的优势。我们本次demo中应用最后一个编译构建仓库,作为生成的软件包的版本归档管理仓库。

发布服务操作指南:

产品介绍 基础操作 进阶操作

版本管理和下载

由于在构建任务里配置了“上传到发布仓库”步骤,每次构建结束后,可以在发布仓库里就会新增一个本次构建生成的软件包,实现软件版本的自动管理。在配置部署任务时就可以在这里选择要部署的软件包文件了。这里支持将某次构建的软件包下载到本地。

7.1.3 部署

这里讲的是容器的部署方式,其他部署方式可参照下面操作指南:

产品介绍 基础操作 进阶操作 Ansible部署playbook编写指导

在devcloud的控制台上点击部署菜单,并新建一个部署任务

在编辑页面填写基本信息,如下

然后选择容器部署

选择我们在上面创建的servicestage集群,然后根据需要选择实例的数量,然后在下方选择我们之前编译时生成的镜像,然后进入最后一项配置如下

选择访问方式,这里选择的是发布为服务,容器内端口映射为8080to30000,点击确认后进入最后确认页面如下

点击确定即可开始执行部署任务了,如下图

页面上展现了部署的步骤与时间等信息,下面我们要验证一下应用是否正常相应,通过浏览器打开我们之前配置的访问地址即可访问:

点击登录试试数据库是否正常相应

登录成功,至此容器部署已经完成。

7.1.4 流水线

当所有流程打通之后,设置对应的流水线,将所有流程添加进去,实现自动化的构建发布部署一键执行。

流水线操作指南:

基础操作  进阶操作

将需要的任务添加进流水线中,并运行流水线。

7.0.5 测试

测试管理(TestMan)是面向软件开发者提供的一体化测试解决方案,覆盖测试需求、用例管理、测试任务管理、缺陷管理,多维度评估产品质量,帮助您高效管理测试活动,保障产品高质量交付。

测试管理操作指导:

基础操作 进阶操作

测试计划

在项目规划阶段将整个项目细化成一个个具体的需求,也是测试计划设计形成的一个过程,测试环节就针对每个需求设计测试用例即可。

用例管理

用例管理页面可以对已经创建的测试用例进行管理,可以将用例关联到具体的需求或者针对需求设计测试用例,提交bug时就能够直接将bug指给需求负责人,实现需求-用例-缺陷的双向追溯。

设计与验收

设计与验收界面,可以在这里根据需求设计测试用例,以及查看用例执行情况和验收报告。

测试总览

包括需求覆盖率、缺陷、用例通过率、用例完成率、缺陷分布、用例进展、需求测试进度、成员用例进展和缺陷等。

至此,恭喜您打通了软件开发云的各服务,完成了docker部署环境的搭建。

8 FAQ

8.1 华为云社区Devcloud产品答疑FAQ           http://forum.huaweicloud.com/forum-642-1.html

9 附录

9.1 软件开发服务(DevCloud)用户指南

1、视频教程

【新手训练营】几分钟教你掌握各个服务基本操作

项目管理  配置管理  流水线  代码检查  编译构建  测试管理  部署  发布

【云途进阶课】场景化教学,从实战中玩转软件开发服务

Web应用场景——开发一套EHR系统:规划阶段  开发阶段  交付阶段

App应用场景——打造一款趣味交友App:规划阶段  开发阶段  交付阶段

迁移上云秘籍

1、从SVN迁移到GIT最强指南

2、为何选择Git版本控制系统

3、Git的工作模式

4、如何将本地代码提交到托管平台

软件开发平台 DevCloud 软件开发云 Docker

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《软件架构理论与实践》 —3.3 软件架构的形式化建模方法
下一篇:LiteOS内核源码分析系列十四 动态内存Bestfit_little分配算法
相关文章