第三章 平台即服务(PaaS)-GitLab-Nexus-Registry

GitLab(代码管理平台)

什么是Git

  • Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
  • Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
  • Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

如何安装Git

下载

下载地址:https://git-scm.com/downloads

Git的一般工作流程

  • 克隆Git资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
    在这里插入图片描述

Git的基本操作

获取与创建项目命令

git init
用git init在项目目录中创建新的Git仓库,你可以在任何时候、任何目录中这么做,完全是本地化的。
git init
git clone
使用git clone 拷贝一个Git仓库到本地,让自己能够查看该项目,或者进行修改。
git clone [url]

基本快照

git add
git add命令可将该文件添加到缓存
git add [url]

git commit

提交代码到本地仓库

git push

将本地代码合并到master

TortoiseGit简化Git操作

什么是GitLab

GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。 团队成员可以利用内置的简单
聊天程序(Wal)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

基于Docker安装GitLab

我们使用Docker来安装和运行GitLab中文版,由于新版本问题较多,这里我们使用目前相对稳定的10.5版本,docker-compose.yml 配置如下:

services:
    web:
        image: ' twang2218/gitlab-ce-zh:10.5'
        restart: always
        hostname: '192.168.75. 145'
		environment:
		    TZ: ' Asia/ Shanghai'
			GITLAB _OMNIBUS_ CONFIG:|
				external_ url 'http://192. 168.75.145:8080'
				gitlab_ rails['git1ab_ shell ssh_ port'] = 2222
				unicorn['port'] = 8888
				nginx['listen_ port'] = 8080
		ports:
			- '8080:8080'
			- '8443:443'
			- '2222:22'
		volumes:
			- /usr/1ocal/docker/gitlab/ config:/etc/gitlab
			- /usr/1ocal/docker/git1ab/ data :/var/opt/gitlab
			- /usr/1oca1/docker/gitlab/1ogs:/var/1og/gitlab

安装完成后的工作

  • 访问地址:http://ip:8080
  • 端口8080是因为我在配置中设置的外部访问地址为8080,默认是80

GitLab的基本设置

第一次使用时需要做一些初始化设置,点击“管理区域” >>> “设置”
在这里插入图片描述

账户与限制设置

关闭头像功能,由于Gravatar头像为网络头像,在网络情况不理想时可能导致访问时卡顿
在这里插入图片描述

注册限制

由于是内部代码托管服务器,可以直接关闭注册功能,由管理员统一创建用户即可。
在这里插入图片描述

GitLab的账户管理

  • 如果GitLab部署在内网,可以开放注册
  • 如果部署在公网,就关闭注册功能,手动创建账号

GitLab创建第一个项目

点击 + 号 >>> 新建项目
在这里插入图片描述
输入项目名称及描述信息,设置可见等级为私有,这样别人就看不见你的项目
在这里插入图片描述

初始化项目

我们选择通过增加一个README的方式来初始化项目
在这里插入图片描述
直接提交修改即可
在这里插入图片描述

使用SSH的方式拉取和推送项目

生成SSH KEY
使用ssh-keygen工具生成,位置在Git安装目录下,我的是 C:\Program Files\Git\usr\bin
输入命令:
ssh-keygen -t rsa -C "your_email@wxample.com"
执行成功后的效果:
在这里插入图片描述

(c) 2016 Microsoft Corporation。 保留所有权利。

C:\Program Files\Git\usr\bin>ssh-keygen -t rsa -C "topsale@vip .qq. com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Lusifer/ .ssh/id_ rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Lusifer/ .ssh/id_ rsa.
Your public key has been saved in /c/Users/Lusifer/ .ssh/id_ rsa. pub.
The key fingerprint is:
SHA256 :CVesJKa5VnQNihQOTotXUAIyphsqjb7Z91q0ji2704E topsale@vip .qq. com
The key's randomart image is:
+---[RSA 2048]----+
+ ..=0=. 
|。。+B.+.0.0
|t +=0+.。
|00...
|=。
|So
|oE .
|o*o+
|*B*0o
+---- [SHA256]-----+

C: \Program Files\Git\usr\bin>

Nexus(依赖管理平台:Maven私服)

什么是Nexus

Nexus是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。
2016年4月6日Nexus 3.0版本发布,相较2.x版本有了很大的改变:

  • 对低层代码进行了大规模重构,提升性能,增加可扩展性以及改善用户体验。
  • 升级界面,极大的简化了用户界面的操作和管理。
  • 提供新的安装包,让部署更加简单。
  • 增加对Docker, NeGet, npm, Bower的支持。
  • 提供新的管理接口,以及增强对自动任务的管理。

基于Docker安装Nexus

我们使用Docker来安装和运行Nexus,docker-compose.yml配置如下:

version:'3.1'
services:
	nexus:
		restart:always
		image:shifudao/nexus3
		container_name:nexus
		ports:
			- 8081:8081
		volumes:
			- /usr/local/docker/nexus/data:/nexus-data

登录控制台验证安装

地址:http://ip:port/
用户名:admin
密码:admin123
非常吃内存,启动较慢
在这里插入图片描述

Maven仓库介绍

在项目中使用Maven私服

配置认证信息

在Maven settings.xml中添加Nexus认证信息(servers节点下):

<server>
	<id>nexus-releases</id>
	<username>admin</username>
	<password>admin123</password>
</server>

<server>
	<id>nexus-snapshots</id>
	<username>admin</username>
	<password>admin123</password>
</server>
Snapshots与Releases的区别
  • nexus-releases:用于发布Release版本
  • nexus-snapshots:用于发布Snapshot版本(快照版)

Release版本与Snapshot定义如下:

Release:1.0.0/1.0.0-RELEASE
Snapshot:1.0.0-SNAPSHOT
  • 在项目pom.xml中设置的版本号添加SNAPSHOT标识的都会发布为SNAPSHOT版本,没有SNAPSHOT标识的都会发布为RELEASE版本。
  • SNAPSHOT版本会自动加一个时间作为标识,如:1.0.0-SNAPSHOT发布后变为1.0.0-SNAPSHOT-20180522.123456-1.jar

配置自动化部署

pom.xml中添加如下代码:

<distributionManagement>
	<repository>
		<id>nexus-releases</id>
		<name>Nexus Release Repos itory</name>
		<url>http://127 .0.0.1 :8081/repository/maven-releases/</url>
	</repository>
	<snapshotRepository>
		<id>nexus- snapshots</id>
		<name>Nexus Snapshot Repository</ name>
		<url>http://127 .0.0.1 :8081/repository/maven-snapshots/</url>
	</snapshotRepository>
</distributionManagement>

注意事项:

  • ID名称必须要与settings.xml中的Servers配置的ID名称保持一致。
  • 项目版本号中有SNAPSHOT标识的,会发布到Nexus Snapshots Repository,否则发布到Nexus Relaese Repository,并根据ID去匹配授权账号。

部署到仓库

mvn deploy

上传第三方JAR包

Nexus 3.0不支持页面上传,可使用maven命令:

# 如第三方JAR包: aliyun-sdk-oss-2.2.3.jar
mvn deploy:deploy-file
	-DgroupId=com. aliyun.oss
	-DartifactId=aliyun-sdk-oss
	-Dversion=2.2.3
	-Dpackaging=jar
	-Dfile=D: \aliyun-sdk-oss-2.2.3.jar
	-Dur1=http://127 .0.0.1:8081/repository/maven- 3rd/
	-DrepositoryId=nexus-releases

注意事项:

  • 建议在上传第三方JAR包时,创建单独的第三方JAR包管理仓库,便于管理与维护。 ( maven-3rd )
  • DrepositoryId=nexus-releases对应的是settings.xml 中Servers配置的ID名称。 (授权)

配置代理仓库

<repositories>
	<repository>
		<id>nexus</id>
		<name>Nexus Repository</name>
		<url>http://127 .0.0.1:8081/ repository/ maven-public/</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
		<releases>
			<enabled>true</enabled>
		</releases>
	</repository>
</repositories>
<pluginRepositories>
	<pluginRepository>
		<id>nexus</id>
		<name>Nexus Plugin Repository</name>
		<url>http://127 .0.0.1:8081/ repository/ maven-public/</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
		<releases>
			<enabled>true</enabled>
		</releases>
	</pluginRepository>
</pluginRepositories>  

Registry(镜像管理平台:Docker私服)

安装Docker Registry私服

简介

官方的Docker Hub是一个用于管理公共镜像的地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像。

安装

在之前的Docker私有仓库章节中已经提到过如何配置和使用容器运行私有仓库,这里我们使用docker-compose 来安装,配置如下:

version: '3.1'
services:
	registry:
		image: registry
		restart: always
		container name: registry
		ports:
			- 5000 : 5000
		volumes:
			- /usr/local/docker/registry/data:/var/lib/registry

测试

启动成功后需要测试服务端是否能够正常提供服务,有两种方式:

  • 浏览器端访问
    http://ip:5000/v2/
    在这里插入图片描述
  • 终端访问
    crul http://ip:5000/v2/
    在这里插入图片描述

配置Docker Registry客户端

我们的教学案例使用的是Ubuntu Server 16.04LTS版本,属于==systemd 系统,需要在/etc/docker/daemon.json ==中增加如下内容(如果文件不存在请新建该文件)

{
	"registry-mirrors": [
		"https://registry.docker-cn.com"
	],
	"insecure-registries": [
		"ip: 5000"
	]
}

注意:该文件必须符合json规范,否则Docker将不能启动。
之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

检查客户端配置是否生效

使用dcoker info命令手动检查,如果从配置中看到如下内容,说明配置成功(192.168.75.133为教学案例IP)

Insecure Registries
	192.168.75.133:5000
	127.0.0.0/8

测试镜像上传

我们以Nginx为例测试镜像上传功能

##拉取一个镜像
docker pull nginx

##查看全部镜像
docker images

##标记本地镜像并指向目标仓库( ip:port/image_name:tag, 该格式为标记版本号)
docker tag nginx 192.168.75.133: 5000/ nginx

##提交镜像到仓库
docker push 192.168.75.133:5000/nginx

查看全部镜像

curl -XGET http://192.168.75.133:5000/v2/_catalog

查看指定镜像

以Nginx为例,查看已提交的列表
curl -XGET http://192.168.75.133:5000/v2/nginx/tags/list

测试拉取镜像

  • 先删除镜像
docker rmi nginx
docker rmi 192.168.75.133:5000/nginx
  • 再拉取镜像
    docker pull 192.168.75.133:5000/nginx

部署Docker Registry WebUI

私服安装成功后就可以使用docker命令行工具对registry做各种操作了。然而不太方便的地方是不能直观的查看registry中的资源情况。如果可以使用UI工具管理镜像就更好了。这里介绍两个Docker Registry WebUI工具

  • docker-registry-frontend
  • docker-registry-web

两个工具的功能和界面都差不多,我们以docker-registry-fontend为例讲解

docker-registry-frontend

我们使用docker-compose来安装和运行,==docker-compose.yml ==配置如下:

version: '3.1' 
services:
	frontend:
		image: konradkleine/docker-registry-frontend:v2
		ports:
			- 8080 :80
		volumes : 
			- ./certs/frontend.crt:/etc/apache2/server.crt:ro
			- ./certs/frontend.key:/etc/apache2/server.key:ro 
		environment:
			ENV_DOCKER_REGISTRY_HOST=192.168.75.133
			ENV_DOCKER_REGISTRY_PORT=5000

注意:请将配置文件中的主机和端口换成自己仓库的地址
运行成功后再浏览器访问:http://192.168.75.133:5000
在这里插入图片描述

真正实现,一次构建,到处运行

一:上传代码到GitLab

  • 修改.gitignore,把不想上传的文件的后缀添加进来。
    在这里插入图片描述
  • 先提交到本地仓库,再提交到远程仓库。

二:下载代码到Deploy虚拟机

  • 修改设置,启用ssh(详情请看前面GIT那一章节)
  • 安装maven并配置环境变量
    在这里插入图片描述
  • 安装数据库(配置docker-compose.yml)
  • 修改代码中的数据源,并git pull到本台机器
  • 用mvn clean package -Dmaven.test.skip=true 命令打包代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值