(1)可随时迁移,数据随时备份
(2)通过docker方式部署,环境隔离,不干扰服务器上的其他运行环境
1. 背景
老板派活了,让2天内搭建一个代码服务器
2. 上网找资料
2.1 在docker中安装gitlab官方指导 Install GitLab by using Docker
2.2 csdn上详细介绍安装过程的文档 docker搭建gitlab服务器完整版(参考这篇文章处理过一个10080端口的bug)
3. 着手开干
3.1 找镜像
在dockerhub上搜索gitlab
3.2 拉取并启动gitlab镜像
3.2.1 拉取镜像
# 拉取镜像,指定版本为 14.1.2-ce.0
docker pull gitlab/gitlab-ce:14.1.2-ce.0
# 查看镜像
docker images
3.2.2 准备数据目录
我们将gitlab的数据保存到物理机的/home/gitlab目录下,做后续的gitlab数据/配置/日志目录。可以提前将这个目录清理出来,不做他用。
mkdir -p /home/gitlab/
3.2.3 启动镜像
编写启动脚本
可以将命令放到启动脚本docker_start_gitlab.sh中,方便使用
# 启动容器
docker run \
-itd \
-p 9980:80 \
-p 9922:22 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce:14.1.2-ce.0
关键参数说明
启动镜像
sudo bash docker_start_gitlab.sh
3.3 修改gitlab配置
3.3.1 进入gitlab docker
docker exec -it gitlab /bin/bash
3.3.2 修改配置文件
# 1 打开配置文件
vi /etc/gitlab/gitlab.rb
# 2 添加如下几行 external_url,gitlab_rails,gitlab_rails和nginx
external_url 'http://192.168.124.194'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.124.194'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
nginx['listen_port'] = 80
3.3.3 重新加载配置
gitlab-ctl reconfigure
3.3.4 修改端口号
# 将port修改为9980, 也就是在docker启动gitlab镜像的时候映射的端口号
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
3.3.5 重启gitlab
# 重启gitlab
gitlab-ctl restart
3.3.6 修改gitlab root密码
# 登录git内部控制台
gitlab-rails console -e production
# 修改root的密码为Aa123456abc
user = User.where(id:1).first
user.password='Aa123456abc'
# 保存并退出git内部控制台
user.save!
exit
3.3.7 登出gitlab容器
exit
3.4 登录gitlab网页
使用用户名root和刚才修改的密码Aa123456abc登录
登录成功后如下图所示
4. git数据备份和恢复
4.1 备份数据
# 先登录到容器中
docker exec -it gitlab /bin/bash
# 使用如下命令备份数据到 /var/opt/gitlab/backups 目录下
gitlab-rake gitlab:backup:create
4.2 恢复数据
# 在新的机器上,启动容器
# 登录到gitlab容器中,恢复数据
docker exec -it gitlab /bin/bash
cd /var/opt/gitlab/backups
gitlab-rake gitlab:backup:restore BACKUP=1537261122_2018_09_18_9.2.5
4.3 还有一种简单粗暴的方式
定期将物理机/home/gitlab目录做备份,在迁移机器上运行之前脚本启动镜像
5. 用户授权管理
5.1 简单管理
一般情况,直接通过gitlab网页注册用户并登录。
5.2 统一管理
需要支持上百人使用时,可以接入LDAP授权服务器,统一管理。
LDAP服务可以本地部署,也可以通过服务商购买。 在本地部署LDAP服务:可以参考统一身份认证系统 OpenLDAP 完整部署
gitlab接入LDAP: Integrate LDAP with GitLab