使用docker安装gitlab中文版记录
关于
由 BobH 实验并记录,QQ:1551608379
该教程会持续更新
环境
系统:Ubuntu 16.04.3LTS
CPU:Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz
内存:4G*2 DDR4
读完教程你将会学到
1.在ubuntu系统上安装docker
2.在任意安装有docker的系统上搭建gitlab
3.gitlab的一些基本配置项的修改以及生效
4.配置gitlab的邮件发送
5.配置gitlab的项目ssh
6.vim的基本使用
7.docker的一些基本操作
过程
1.安装docker
先删除掉apt官方库所有docker
sudo apt-get remove docker docker-engine docker-ce docker.io
然后更新apt源
sudo apt-get update
安装以下包以使apt可以通过HTTPS使用存储库
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
使用下面的命令来设置stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
然后再更新apt源
sudo apt-get update
安装最新版本的Docker CE
sudo apt-get install -y docker-ce
安装成功后,使用下面指令启动docker(默认是启动了的)
sudo systemctl start docker
2.使用docker来安装gitlab
确保已经成功安装上了docker
接下来来到 ~
目录下,然后执行
sudo docker pull twang2218/gitlab-ce-zh
然后给本机新建三个文件夹,用于存储docker内运行的gitlab的配置文件目录
建议给定空间大一点,最好是在主磁盘下,因为以后gitlab东西都是存这里
mkdir ~/docker/gitlab/config
mkdir ~/docker/gitlab/logs
mkdir ~/docker/gitlab/data
接下来就可以创建容器了
sudo docker run --detach --publish 443:443 --publish 80:80 --publish 23:22 --name cn-gitlab --restart always --volume ~/docker/gitlab/config:/etc/gitlab --volume ~/docker/gitlab/logs:/var/log/gitlab --volume ~/docker/gitlab/data:/var/opt/gitlab twang2218/gitlab-ce-zh
这句话需要解释一下,--publish参数可以指定端口映射,前面是宿主机的端口,后面是容器内端口,这里我把SSL端口,80端口,和SSH端口都映射出来方便后面管理
然后后面的-volume参数就是指定容器内文件系统映射关系,这里的地址( ~/docker/gitlab/config
)之类的就是我们刚才在主机上新建的用于存储gitlab数据的目录
接下来我们检验一下启动是否成功
输入
sudo docker ps
查看现在正在运行的docker虚拟机的状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ad55d926321 twang2218/gitlab-ce-zh "/assets/wrapper" 4 minutes ago Up 4 minutes (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:23->22/tcp cn-gitlab
如果在STATUS那一栏看到Starting
字样表示gitlab正在启动,如果是healthy
字样表示已经启动成功,这时候我们可以访问服务器的ip看到如下界面了
这个时候表明gitlab已经搭建成功,可以使用了
初始用户名为 root
密码在这里设置了即可登录
接下来我将讲述如何配置gitlab的邮件发送
3.使用docker来修改gitlab的配置
关于gitlab的配置文件在何处,这里你可以用以下指令查看
为了方便各位理解,接下来的指令我都会直接附上终端的目录信息等
由于我们刚才使用docker搭建gitlab的时候指定了存储目录,所以现在你可以
ycoi@ycoi-server:~/docker/gitlab$ cd ~/docker/gitlab/
ycoi@ycoi-server:~/docker/gitlab$ ls
不出意外,你会看到如下结果:
config data logs
我们的配置文件位于config文件夹内,所以执行下列指令
ycoi@ycoi-server:~/docker/gitlab$ cd config
ycoi@ycoi-server:~/docker/gitlab/config$ ls
不出意外,你会看到如下结果:
gitlab.rb ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key trusted-certs
gitlab-secrets.json ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub
其中的gitlab.rb
就是我们的配置文件,使用下列指令来编辑它
ycoi@ycoi-server:~/docker/gitlab/config$ sudo vim gitlab.rb
如果打开是空白,那么很可能是你没有加上sudo
导致vim没有权限读取导致,请一定不要忘了sudo
打开后是形如此番场景的一个配置文件编辑页面,如果你不熟悉vim的基本操作,请跳到本教程末尾附录的vim基本使用教程中去,这里不做赘述
按下键盘上的/
键进行查找,并输入/# exter
(注意#号后有空格),然后回车,你会发现光标跳到下面这个位置来
然后按下键盘上的i
,切换到编辑模式,将#号删除,并将后面的url改成你自己的服务器内网地址(或者域名,在后面高级篇会讲一下),就像这样
建议初学者都将链接设置成http而不是https,因为https会有很多意外的麻烦,所以不要一下子想学会所有,像这样填,或者 http://192.168.1.105/
之类的形式
然后是配置gitlab的ssh连接功能,默认的gitlab是不需要配置ssh端口的,因为ssh端口默认为22,但是由于刚才我们在docker新建容器的时候为了避免和本机ssh端口冲突,把容器内的22端口映射为了23端口,所以这里我们还需要做一点修改
按下键盘上的/
键进行查找,并输入/gitlab_shell_ssh
(注意#号后有空格),然后回车,你会发现光标跳到下面这个位置来
删除#
号,然后将端口改成23(如果你刚才映射出去的不是23,那你映射的是多少就填多少)
然后按下ESC
键退出编辑模式,如果你不配置发送邮箱功能,此时可以按下键盘下 :
键然后输出 wq!
退出并保存。然而现在我想教你们如何配置邮箱。
继续停留在vim配置文件内,按下键盘上的/
键进行查找,并输入/smtp_enable
,然后回车,你会发现光标跳到下面这个位置来
这就是所有邮箱配置所需要的信息了,你不必每一个都取消注释,像是我这样就可以
还有就是需要添加一点点东西,是为了防止邮件被退回的
这里smtp_password
我填写的并不是我的真实QQ密码,而是授权码,详情可以看这里
https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28
如果你需要配置,只需要把图片中所有1551608379@qq.com
替换成你的邮箱,然后更改成你的授权码(或者密码)就行了
配置完毕后,可以按下键盘下 :
键然后输出 wq!
退出并保存。
此时所有信息都配置完毕了,但是还未生效,接下来我将教你如何在docker里面让gitlab重载配置,让刚才的设置生效
4.使用docker来重载gitlab配置并验证邮箱配置
现在配置文件更改了,然而gitlab仍然处于运行中,所以更改不会立即生效,接下来的操作就是要让gitlab重新读取配置文件并让我们的更改生效
请一定注意不要像网上所说的那样直接使用sudo docker cn-gitlab restart
这样的方式来重启容器达到配置生效的效果,这样做非常不安全,配置文件可能只有部分生效而且很可能造成gitlab的完全崩溃,无法启动(笔者的亲身经历...)
接下来,输入以下命令,在任意目录下执行均可
sudo docker exec -it cn-gitlab /bin/bash
输入以后,你会发现终端前缀变化了,实际上,这就是docker容器内的shell环境,接下来你输入的所有指令都将是在cn-gitlab
这个容器内完成的
接下来输入以下指令重载gitlab的配置,注意观察日志输出
root@9ad55d926321:/# gitlab-ctl reconfigure
基本上如果你配置文件不粗心写错,且是完全严格按照本教程要求来操作的话,是不会报错的。
当你看到如下界面
出现gitlab Reconfigured!
字样的时候,恭喜你,已经重载配置成功了。
以后如果你作出了有关配置文件的修改,最好都以这样的方式来重载配置,如果不成功,至少不至于让gitlab全盘崩溃,造成数据损失。当然,日常docker容器备份也是一个好习惯,在本教程附录部分,我也会讲解如果备份docker镜像的详细事宜。
接下来我们来验证一下邮箱发送功能是否配置成功,在这之前,用浏览器访问服务器地址确保gitlab已经正常启动。
我们仍然停留在容器内部的shell里面,然后执行下面命令
root@9ad55d926321:/# gitlab-rails console
注意,在输入这个指令后,控制台会卡顿相当长一段时间,表面上看起来是无输出的未响应状态,请不要着急,等待直到出现下面信息
然后在这里输入
irb(main):001:0> Notify.test_email('你收件邮箱', 'test', 'test body').deliver_now
查看输出信息,并检查收件箱是否已经收到测试邮件
已经成功证明邮件发送功能配置成功
附录
1.关于vim基本操作
使用vim编辑某个文件
sudo vim <文件路径>
例如
sudo vim gitlab.rb
sudo vim ~/docker/gitlab/config/gitlab.rb
打开vim过后,一下基本操作
键盘↑
↓
←
→
移动光标
键盘i
键按下后进入可编辑模式
键盘ECS
键按下后退出当前模式
键盘/
键按下后进入搜索模式,在/
后输入想搜索的内容回车
键盘:
按下后进入命令模式,一般只用退出并保存命令wq!
2.docker容器的备份
备份一个docker镜像为文件
sudo docker export <镜像ID或名称> > backup.tar
例如
sudo docker export cn-gitlab > 20190524bak_gitlab.tar
稍等片刻即可看到当前目录下多出一个备份文件,只需要拷贝这个备份文件就可以完成备份
导入时
sudo docker import <备份文件名>
例如
sudo docker import 20190524bak_gitlab.tar
哇偶,好厉害哦豁!
楼主让我评论一下
辛苦了