Docker on 华为云DevCloud

举报
DevCloud 发表于 2018/06/13 11:28:32 2018/06/13
【摘要】 本文主要帮助想要或者正在使用容器部署服务的用户,如果将他们的应用部署通过软件开发服务部署在华为云上。

文章目的

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

概述

2.1 Docker

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

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.1 华为云账号

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

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

图片1.png

图片2.png 

3.2 工程初始化文件

数据库以及数据初始化脚本(本文mysqlbootdo.sql

应用程序中间件以及工程源代码(本文jdkbootdo

 

3.3 创建项目

创建项目 

 图片3.png

spacer.gifspacer.gif华为云官网首页-产品-软件发服务进入华为软件开发服务首页

 

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

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

图片4.png 

3.4 创建代码仓库

首先在代码广场中搜索bootdo

图片5.png 

 

然后点击fork图标

图片6.png 

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

图片7.png 

 

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

git的使用方式详

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

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

 

3.5 Dockerfile

截图1.png

截图2.png

截图3.png


 图片8.png

 

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

 

3.6 Servicestage集群

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

图片9.png 

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

图片10.png 

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

3.7 Docker镜像

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

截图4.png

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

 

传成功后,会将镜像显示在如下位置:
图片11.png

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

3.8 搭建数据库服务

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

图片12.png 

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

图片13.png 

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

图片14.png 

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

图片15.png 

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

图片16.png 

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

 图片17.png

 

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

mkdir -p /root/update/mysql/datadir

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

图片18.png 

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

图片19.png 

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

图片20.png 

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

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

研发场景概览

4.1 示例项目概述

1.项目名称:bootdo blog

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

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

4.开发环境IDEAVSCODE

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

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

4.2 通用客户场景

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

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

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

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

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

4.3 华为云服务方案总览

 图片21.png

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

代码管理场景

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


代码同步

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

 

单击添加SSH密钥进入添加SSH密钥界面

图片22.png

图片23.png

图片24.png 

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

 

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

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

图片25.png 

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

图片26.png 

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

图片27.png 

将代码仓库克隆本地

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

 

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

 

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

$ git add *

$ git commit -m "init"

$ git push origin master


代码仓库

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

图片28.png 

代码质量评估场景

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


代码质量评估操作指

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

 

代码质量检查

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

图片29.png 

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

图片30.png

图片31.png 

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

 

任务进入检查中状态动态显示检查进度。

图片32.png 


代码质量评估报告

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

 

图片33.png


代码修改建议

图片34.png 

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

持续交付(CI/CD场景

7.1.1 编译构建

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

图片35.png

图片36.png

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

图片37.png 

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

图片38.png 

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

图片39.png 

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

图片40.png 

选择执行计划后开始编译

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

图片41.png 

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

7.1.2 发布

软件仓库

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

发布服务操作指

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

 

版本管理和下载

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

图片42.png 

7.1.3 部署


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

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

 

devcloud的控制台上点击部署菜单,新建一个部署任务spacer.gif

图片43.png

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

图片44.png 

然后选择容器部署

图片45.png 

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

图片46.png 

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

图片47.png 

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

图片48.png 

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

 图片49.png

图片50.png

 

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

图片51.png 

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

7.1.4 流水线

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

流水线操作指南:

基础操作  进阶操作


 图片52.png

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

 图片53.png

7.0.5 测试

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


测试管理操作指导:

基础操作 进阶操作

 

测试计划

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

用例管理

图片54.png 

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


设计与验收

图片55.png 

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


测试总览

图片56.png 

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

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

FAQ

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

附录

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

1、视频教程

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

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

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

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

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

迁移上云秘籍

1SVN迁移GIT最强指南

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

3、Git的工作模式

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




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。