如何快速部署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部署

先咕咕,后面补

相关推荐
代码吐槽菌4 分钟前
基于SpringBoot的在线点餐系统【附源码】
java·开发语言·spring boot·后端·mysql·计算机专业
鱼跃鹰飞1 小时前
Leetcode面试经典150题-94.二叉树的中序遍历
算法·leetcode·面试
X² 编程说1 小时前
14.面试算法-字符串常见算法题(三)
java·数据结构·后端·算法·面试
请不要叫我菜鸡2 小时前
Go语言基础学习02-命令源码文件;库源码文件;类型推断;变量重声明
linux·后端·golang·类型推断·短变量·变量重声明·库源码文件
AskHarries2 小时前
Spring Boot集成Akka Cluster快速入门Demo
java·spring boot·后端·akka
少喝冰美式2 小时前
【大模型教程】如何在Spring Boot中无缝集成LangChain4j,玩转AI大模型!
人工智能·spring boot·后端·langchain·llm·ai大模型·计算机技术
lucifer3113 小时前
Spring Boot 中的配置属性绑定机制详解
java·后端
cci3 小时前
Rust gRPC---Tonic教程
后端·rust·grpc
谢林v3 小时前
Explain的简单使用
后端
lucifer3113 小时前
深入理解 Spring Boot 自动配置原理
java·后端