1、拉取gitlab镜像
查找镜像
root@ubuntu:~# docker search xhai/gitlab
下载镜像
root@ubuntu:~# docker pull xhai/gitlab:latest
2、创建gitlab容器
创建容器
root@ubuntu:~# docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /etc/gitlab/config:/etc/gitlab -v /etc/gitlab/logs:/var/log/gitlab -v /etc/gitlab/data:/var/opt/gitlab xhai/gitlab
命令解释
-p 端口映射,冒号前为宿主机端口,后为容器内端口。
-v 目录挂载,冒号前为宿主机目录,后为容器内目录。
--name 给容器命名。
--restart always 开机自启容器。
-d 后台运行。
查看容器
root@ubuntu:~# docker ps
若出现自己运行的容器即为成功,若未出现可用如下命令查看。
root@ubuntu:~# docker ps -a
若此命令出现容器,可能配置出现错误,使用如下命令删除。
root@ubuntu:~# docker rm -f [容器ID]
3、配置详情
配置gitlab.rb文件
在gitlab上创建项目的时,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/etc/gitlab/config/gitlab.rb)
此步骤不需要进入容器内操作,直接在宿主机操作即可。
vim /etc/gitlab/config/gitlab.rb
输入如下字段
可在任意行插入如下字段,不用选择特定地点。
external_url 'http://192.168.1.1'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.1.1'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
### Email Settings
gitlab_rails['smtp_enable'] = true # 开启 SMTP 功能
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465 # 端口不可以选择587,测试过会发送邮件失败
gitlab_rails['smtp_user_name'] = "111111111@qq.com" # * 你的邮箱账号,也可以是ge**lin@qq.com等
gitlab_rails['smtp_password'] = "qiuytyzsytg" # * 授权码,不是密码
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '111111111@qq.com' # * 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错
gitlab_rails['smtp_domain'] = "qq.com" # 修改并不影响 可修改为exmail.qq.com/james.com 经测试完全不影响,删除也不影响,并且发送的邮件都是一样的。
4、测试邮件服务器
不用进入到容器内
docker exec gitlab gitlab-ctl reconfigure
进入容器,开启 gitlab 的 bash 工具
docker exec -it gitlab bash
开启 gitlab-rails 工具
gitlab-rails console production
发送邮件进行测试,换自己邮箱
Notify.test_email('xhai@gmail.com', 'Message Subject', 'Message Body').deliver_now
5、重启gitlab
重启gitlab容器
docker restart gitlab
查看实时日志
docker logs -f [容器ID]
6、访问页面
http://IP+端口
端口为上面映射的80端口
7、重置root用户密码
docker exec -it gitlab bash #进入容器
gitlab-rails console production #开启 gitlab-rails 工具
依次输入以下命令回车
user=User.where(id:1).first
user.password='123456789' #可自定义
user.password_confirmation='123456789'
user.save! #保存即可
最终root用户密码为123456789
8、gitlab备份
修改备份文件目录
可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
修改完成之后使用gitlab-ctl reconfigure命令重载配置文件即可
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
设置备份过期时间
vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_keep_time'] = 604800 #以秒为单位
设置自动备份
创建定时任务
crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create #每天凌晨两点备份一次
或者使用脚本备份,创建gitlab-backup.sh脚本
vim gitlab-backup.sh
#!/bin/bash
case "$1" in
start)
docker exec git gitlab-rake gitlab:backup:create
;;
esac
创建定时任务
0 2 * * * /root/gitlab_backup.sh start
9、gitlab恢复
进入容器
docker exec -it gitlab bash
gitlab-ctl stop unicorn #停止相关数据连接服务
gitlab-ctl stop sidekiq
chmod 777 /var/opt/gitlab/backups/1648409665_2022_03_27_11.1.4_gitlab_backup.tar #修改权限,如果是从本服务器恢复可以不修改
gitlab-rake gitlab:backup:restore BACKUP=1648409665_2022_03_27_11.1.4 #从1648409665_2022_03_27_11.1.4编号备份中恢复
gitlab-ctl start #启动gitlab