1、准备工具
安装方式为docker安装,如果尚未安装docker,按照 “安装docker” 的第3步进行安装即可 安装docker Docker 20.10.5 安装(Centos7)
2、安装
2.1 获取镜像
获取gitlab镜像包(这里的Community Edition (CE)表示社区标本)
docker pull gitlab/gitlab-ce

查看镜像
docker images

2.2 创建GitLab工作目录
- 创建config、logs、data3个目录
mkdir -p /home/gitlab/configmkdir -p /home/gitlab/logsmkdir -p /home/gitlab/data
2.3 运行脚本启动服务
- 参数介绍
- detach:指定容器运行于前台还是后台
- hostname:指定主机地址,如果又域名可以指定域名
- publish:指定容器暴露的端口,左边的端口表示宿主机的端口,右边的表示容器的端口
- name:给容器起一个名字
- restart always:总是重启
- volume:数据卷,在docker中式最重要的一个知识点
docker run --detach \--hostname 192.168.0.125 \--publish 7001:443 --publish 7002:80 --publish 7003:22 \--name gitlab --restart always \--volume /home/gitlab/config:/etc/gitlab \--volume /home/gitlab/logs:/var/log/gitlab \--volume /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
2.4 修改GitLab.rb配置文件
按照上面的方式,gitlab容器运行没有问题,但是gitlab上创建项目的时候,生成项目的URL访问地址是容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机器:/home/gitlab/config/gitlab.rb)配置三个参数
vim /home/gitlab/config/gitlab.rb
修改IP + 邮箱发送邮件的配置
external_url 'http://192.168.0.125'gitlab_rails['gitlab_ssh_host'] = '192.168.0.125'gitlab_rails['gitlab_shell_ssh_port'] = 7003gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.qq.com"gitlab_rails['smtp_port'] = 465gitlab_rails['smtp_user_name'] = "1315577585@qq.com"gitlab_rails['smtp_password'] = "授权码"gitlab_rails['smtp_domain'] = "smtp.qq.com"gitlab_rails['smtp_authentication'] = "login"gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = truegitlab_rails['gitlab_email_from'] = '1315577585@qq.com'
【注意】:
**extrnal_url **和**gitlab_rails**这两个IP参数建议固定操作系统的静态不变的IP或者是域名进行配置,假设IP变得话在GitLab新建项目的时候,生成的IP还是原来的IP,此时就无法推送代码在GitLab里面 ===>QQ授权码生成在”设置”—->”账户”
**
2.5 进入GitLab容器重配置服务
进入gitlab容器前台
docker exec -it gitlab /bin/bash
重置gitlab客户端的命令
gitlab-ctl reconfigure
由于我们运行是使用数据卷参数进行运行的,宿主机的gitlab.rb文件修改了,gitlab的文件会跟着改,但是容器的文件不会跟着生效,必须要进去容器里面进行命令执行,重置配置文件比较耗费时间,需要耐心等待,如果时间比较短说明成功率不高,而且进去容器之后就退出啦。

2.6 重启容器
docker restart gitlab
2.7 查看端口状态
netstat -tnl

2.8 GitLab常用命令
gitlab-ctl reconfigure // 重新应用gitlab的配置gitlab-ctl restart // 重启gitlab服务gitlab-ctl status // 查看gitlab运行状态gitlab-ctl stop // 停止gitlab服务gitlab-ctl tail // 查看gitlab运行日志
3、初始GitLab
3.1 浏览器查看
- 浏览器输入宿主机IP + 7002 ===> http://192.168.0.125:7002/,重置密码即可

- 重置密码(root/root123qwe),点击Sign in进行登录

3.2 配置设置
- 点击 “Preferences” 进入配置页面

- 滑动到底部修改 “Localization” —> “Language” —-> 简体中文 —-> “save changes”,刷新页面生效

3.3 邮箱认证
- 点击右上角头像 —> “prefences” —> “电子邮件”,选中区域填写自己的有效邮箱,点击添加电子”邮件地址”按钮,会显示邮箱处于未验证状态

- 同级目录点击”用户资料”,主要设置中”电子邮件”红色框中有刚刚添加的电子邮箱,点击”Resend confirmation e-mail”跳转发送邮件页面

- 进入自己的邮箱,点击”Confirm your email address”,跳转页面

- 默认跳转的路径存在问题需要手动修改,添加端口

【注意】:添加如下
- 出现如下图所有表示邮箱验证成功

- 此时最初邮箱验证显示”已验证”

- “用户资料”信息也会同步更新

4、使用GitLab
4.1 创建分组
- 选择你的群组 —> 创建”新建群组”

- 创建群组名称

4.2 创建项目
创建项目方式:分组中创建/点击创建项目按钮,本次提供在分组中创建项目配置方案
- “群组” —> “你的群组”,点击 你的目标分组进入分组中

- 点击”新建项目”

- 系统提供三种创建方式,本次选择”创建空白项目”

- 填写”项目名称”,这种方式默认回显出当前的项目组,点击”新建项目”,完成创建空白项目

4.3 添加SSH密钥
- 点击”添加SSH密钥”

- 打开本机公钥

- 复制”id_rsa.pub”中的内容到文本域框中 —> 点击”添加密钥”

【注意】:git之前没有生成公钥过,
git使用 【 todo 日后更新添加解决方案】。。。。。。
git公钥生成
ssh-keygen -t rsa -b 2048 -C "example@example.com"
保存展示添加过的公钥列表

5、上传代码(空项目)
- 官方提供方案
1.Git 全局设置
git config --global user.name "lixin"git config --global user.email "1315577585@qq.com"
2.创建一个新仓库
git clone git@192.168.0.125:lixin/lixin-demo.gitcd lixin-demotouch README.mdgit add README.mdgit commit -m "add README"git push -u origin master
3.推送现有文件夹
cd existing_foldergit initgit remote add origin git@192.168.0.125:lixin/lixin-demo.gitgit add .git commit -m "Initial commit"git push -u origin master
4.推送现有的 Git 仓库
cd existing_repogit remote rename origin old-origingit remote add origin git@192.168.0.125:lixin/lixin-demo.gitgit push -u origin --allgit push -u origin --tags
- 本文提供方式(本地文件上传到git仓库)
【使用】”3.推送现有文件夹”这种方式
初始化、绑定远程仓库、提交
推送到远程仓库的主分支即可,完成代码的推送
6、 下拉代码
- 复制克隆地址使用HTTP克隆,目前需要手动添加端口

使用克隆命令pull代码
git clone http://192.168.0.125:7002/lixin/lixin-demo.git

本地已经可以查询到刚刚拉取的代码

7、异常情况
7.1 known_hosts配置异常
- 出现如下问题是因为 “known_hosts”文件中已经配置服务器IP相关公钥信息,但是和我们保存SSH的公钥信息存在歧义

- 打开 “C:\Users\woshi.ssh\known_hosts” (.ssh对应目录)

- 删除与服务器IP相同的信息即可

参考文档
- Docker安装GitLab全过程详解 https://www.jianshu.com/p/0bc9b4755082
- 记一次gitlab添加用户收不到邮件的解决办法 https://www.cnblogs.com/wenwei-blog/p/6286944.html

