如何快速部署gitlab,git+docker+jenkins+gitlab(1)

前言

因为目前我实习的项目经常和仓库,docker,gitlab打交道,同时为了巩固这些相关知识,特此开这个专栏。一方面是做记录,另一方面就是回忆,应该会分2-3期。

目的:如何快速的部署个人的仓库,同时因为是部署到docker上的,也方便迁移和部署。

本期目的:

复制代码
1.了解git是什么,因为git是一切的前提,git是如何进行通信,这部分应该比较快的过一遍
2.如何安装gitlab,同时通过网页进行访问
3.如何生成一个上述的镜像。

1.git是什么?

1.1定义

  • Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

  • 我们之前背过的八股也知道,git其实就是个分布式管理仓库的一个系统,除了git其实还有svm也是进行代码管理,但是因为不是分布式管理,也逐渐被淘汰。还有一点八股常背就是,git通过乐观锁的思想来实现冲突控制。

1.2 启动环境

  • 这里我采用docker的方式,来启动两个容器,一个作为git server,一个作为git client,命令如下,用ubuntu的也行,centos也行,甚至gitlab也提供一个自身的镜像。

ps:当然我这里为了模拟从0开始,就用ubuntu作为我的底层image。后续也可以将命令集成到dockerfile来build image,这里我为了集图就一步步来了

  1. 第一步,启动容器:
bash 复制代码
# 1.如果没有docker环境先预装一个,这里我省略了,直接拉取ubuntu镜像
docker pull ubuntu
# 2.起两个容器
docker run -it -p 12345:80 --privileged --name git-server1 ubuntu /bin/bash
docker run -it --name git-client1 ubuntu /bin/bash

启动成功,这里的参数就不解释了哈。-p是为了后面gitlab服务器启动之后将80端口,通过nginx转发到宿主机上进行访问。

  1. 安装git,安装vi,后面要修改文件,如果觉得下载慢可以换个源啥的。
csharp 复制代码
# 1.update
apt-get update
# 2.安装
apt-get install vim git -y
# 3. check
git version #显示有东西就是安装成功

3.在服务器端git-server1的容器进行操作,类似创建一个服务器上的仓库,来给客户端进行访问和拉取

  • 这一步主要是为了设置用户组,因为一般我们在服务器会进行权限划分,一般不会在root用户下进行操作,这里我设置一个叫git的用户,同时创建了一个名叫example的仓库
bash 复制代码
useradd git
passwd git
mkdir /git-root/
cd /git-root/
git init --bare example.git
  • 这一步,是提权给git用户组,因为我之前都是在root用户下操作,这里也是我之前经常犯错的点,用户权限不对就可能导致一些问题。
bash 复制代码
chown -R git:git example.git/
  • 这一步,是进入git用户,生成密钥(也许是公钥?),这里是不是很熟悉,https的相关知识,需要注意的点是,通过useradd 方式是不会生成用户目录的,需要手动创建
bash 复制代码
mkdir /home/git
chown -R git:git git/
mkdir /home/git/.ssh
su - git #不报错,什么都不显示就表示进入了,因为linux的思想就是不显示就是成功
ssh-keygen -t rsa

成功!

  • 复制公钥文件多一份,叫authorized_keys,这里主要是为了给后面客户端进行免密登录用的
bash 复制代码
#如果还在git下,切换回root
exit
cd /home/git/.ssh
cp id_rsa.pub authorized_keys
apt-get install openssh-server
service ssh status
service ssh start

4.客户端操作,客户端就简单了,但是还是会有一点坑

  • 生成密钥
csharp 复制代码
# 需要知道两台容器的ip地址,因为一般的ubuntu纯净版是没有的,需要自己安装
apt-get install net-tools -y
ifconfig -a
ssh-keygen #一路回车
ssh-copy-id git@{服务端ip}
#输入密码

5.拉仓库

ruby 复制代码
git clone git@{server ip}:/git-root/example.git

配置用户名等信息,主要就是name和email,然后就是老生常谈的add commit push

arduino 复制代码
git config --global user.name "test"
git config --global user.email "test@test.com"

可以看到,新的push已经有了,但是我很奇怪的是,服务端竟然没办法感知,这个我后面在研究一下 小结:学会了如何部署一个本地的简单git!(后面会补充如果再加一个client2,看能不能感知到这次的变化)

2.gitlab部署

先咕咕,后面补

相关推荐
血小板要健康6 小时前
Java基础常见面试题复习合集1
java·开发语言·经验分享·笔记·面试·学习方法
野犬寒鸦7 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
我爱娃哈哈7 小时前
SpringBoot + Flowable + 自定义节点:可视化工作流引擎,支持请假、报销、审批全场景
java·spring boot·后端
李梨同学丶9 小时前
0201好虫子周刊
后端
思想在飞肢体在追9 小时前
Springboot项目配置Nacos
java·spring boot·后端·nacos
cyforkk9 小时前
09、Java 基础硬核复习:异常处理(容错机制)的核心逻辑与面试考点
java·数据库·面试
Loo国昌12 小时前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
ONE_PUNCH_Ge13 小时前
Go 语言泛型
开发语言·后端·golang
Warren9813 小时前
Pytest Fixture 作用域详解:Function、Class、Module、Session 怎么选
面试·职场和发展·单元测试·pytest·pip·模块测试·jira
良许Linux13 小时前
DSP的选型和应用
后端·stm32·单片机·程序员·嵌入式