1、DevOps
DevOps是Development和Operations两个词的缩写,它涵盖开发、测试和运维的整个过程,简言为自动化部署
2、Git/GitLab
Git是一个版本控制系统,GitLab是一个远程的Git仓库,GitLab与GitHub和国内的码云类似,用户在GitLab上注 册账号,上传项目到GitLab,通过GitLab对项目进行版本控制。通常企业使用GitLab在局域网搭建自己的Git代码管理仓库,不过随着云计算的发展,很多企业也开始使用提供Git仓库管理公共服务的平台,比如:码云和GitHub等
3、Docker
基于微服务架构的软件在生产部署时遇到了这样的挑战:
1、微服务的开发语言、操作系统、依赖库等环境配置不同,如何快速安装、迁移、配置软件?
2、一个软件由若干微服务组成,如何快速批量部署微服务?
3、如何有效的利于计算机资源?
设想:在一台计算机安装多个微服务,使用一种技术将微服务打包、复制、部署,并且微服务之间相互隔离互不影响
Docker可以在MAC、Windows、Centos、DEBIAN、UBUNTU等操作系统上运行,提供社区版和企业版
部署流程:
1、在pom文件中添加maven的打包插件代码:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
2、在IDEA执行clear package打包命令进行打包
3、创建镜像
将上一步的jar包拷贝到Linux服务器,准备创建镜像
测试jar包是否可以运行,执行:java -jar xc-govern-center-1.0-SNAPSHOT.jar
在xc-govern-center-1.0-SNAPSHOT.jar 位置编写Dockerfile文件
FROM java:8 ENV ARTIFACTID xc‐govern‐center ENV ARTIFACTVERSION 1.0‐SNAPSHOT ENV HOME_PATH /home WORKDIR $HOME_PATH ADD /$ARTIFACTID‐$ARTIFACTVERSION.jar $HOME_PATH/$ARTIFACTID.jar ENTRYPOINT ["java", "‐jar", "xc‐govern‐center.jar"]
在Dockerfile文件所在目录执行:docker build -t xc-govern-center:1.0-SNAPSHOT .
镜像创建成功,查询镜像
创建容器
基于xc-govern-center:1.0-SNAPSHOT镜像创建容器,容器名称为xc-govern-center-test
docker create ‐‐name xc‐govern‐center‐test ‐t ‐p 50101:50101 ‐e PORT=50101 ‐e EUREKA_SERVER=http://192.168.101.64:50101/eureka/,http://192.168.101.64:50102/eureka/ xc‐ govern‐center:1.0‐SNAPSHOT
容器创建成功,可通过docker ps -a命令查看
启动容器
docker start xc-govern-center-test
容器启动完成可以通过docker ps 查询正在运行中的容器
停止与删除
1、停止正在运行的容器
docker stop 容器名
例如:docker stop xc-govern-center-test
2、删除容器
docker rm 容器名
例如:docker rm xc-govern-center-test
3、删除镜像
docker rmi 镜像名或镜像Id
例如:docker rmi xc-govern-center:1.0-SNAPSHOT
maven构建镜像
上边构建的过程是通过手工一步一步完成,maven提供docker-maven-plugin插件可完成从打包到构建镜像、构建 容器等过程。
1、编写pom_docker.xml
2、将Dockerfile文件拷贝到src/main/resource下
3、删除之前创建的xc-govern-center镜像
4、进入工程根目录(pom_docker.xml所在目录)执行
mvn ‐f pom_docker.xml clean package ‐DskipTests docker:build
创建镜像成功,结果如下:
持续集成
持续集成的思想是每天要多次将代码合并到主干,并进行集成测试,这样就可以提前发现错误,进行修正。持续集成也属于DevOps
持续集成的好处:
1、自动化集成部署,提高了集成效率
2、更快的修复问题
3、更快的进行交付
4、提高了产品质量