系列文章前言
此 git/gitlab 系列文章,预计会分为 3 个部分
-
gitlab 的安装及常用配置说明
-
Git 入门和高级功能及常见问题的测试与解决
-
gitlab/git 推行使用规范示例
当然不会非常全面,着重于代码托管和合作开发部分。部分章节主用 PPT 说明,可通过相关章节内容去 Github 获取。
虽然目前相关内容很多,不过对于此份内容部分,都是亲自测试并在内部进行了推广测试,比较详实。对于团体希望使用 git/gitlab 管理代码和合作开发,多多少少能有些参考作用;对于个人学习使用 git 和 gitlab,也有更多一点的帮助。
一些测试和功能实现部分,未必是最优解,但的确是一个解,可做参考。
此篇后续十七篇文章,一起入门 git/gitlab 的世界。有问题,大家可一起交流。
如果命令中有诸如 <XXX> 或者 {XXX}的指代,记得把符号一起替换成实际的参数。
Git入门及常用命令、Gitlab用户数据备份与定时备份、gitlab-web基本功能说明、omnibus package安裝gitlab-ce 的cover图源网络。
docker 安装 gitlab-ce
安装 docker
sudo apt install docker.io
安装完成之后,直接使用 docker 命令,可能会出现权限不足(permission denied)。
解决方法,将一般用户加入可用:
sudo usermod –aG docker <username>
设置完之后,一定要注销用户,再登入,才能生效,生效之后。
ubuntu18 可能需要重启。
更多 docker 常用指令的简单说明,可参看之前使用 《Ubuntu18.04下docker基本指令和使用docker安装mysql》
安装前的清理
因为重头来过,所以,我们先查看下是否有之前安装过的名叫 gitlab 的容器
docker ps
此处若没有,则没有 gitlab 的 docker;如果有,则用命令:docker rm gitlab
移除
抓取官方 gitlab image 并使用 docker 运行容器
直接终端输入指令
docker pull gitlab/gitlab-ce:latest
pull 可能需要一点时间,取决你下载的网速。
下载成功之后,使用docker images
命令可以看到下载的 docker 镜像列表。
使用下载好的 images,创建容器,例如:
docker run --detach \
--hostname 192.168.XX.XX \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab-ce/config:/etc/gitlab \
--volume /srv/gitlab-ce/logs:/var/log/gitlab \
--volume /srv/gitlab-ce/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
以上配置了:
hostname:gtilab 的访问地址;
publish:映像主机端口和 docker 中访问 gitlab 的端口;
name:docker 容器名称;
restart:是否自动重启;
–volume:设定创建存放配置、日志、数据的文件夹.
在设定的位置(–volume),会生成以下几个文件夹,如下图
创建的gitlab文件夹其作用可参考以下:
本地位置 | 容器位置 | 用途 |
---|---|---|
/srv/gitlab-ce/data | /var/opt/gitlab | For storing application data |
/srv/gitlab-ce/logs | /var/log/gitlab | For storing logs |
/srv/gitlab-ce/config | /etc/gitlab | For storing the GitLab configuration files |
正常的话,在创建完之后,会自动开启,开启成功之后,效果如下图(当看到 STATUS 为 healthy,表明已经正常启动):
docker正常启动gitlab容器登入之前创建 container 时的 hostname,可以查看到,如下图:
gitlab初始首页首次访问时,需要设定 root 管理员的密码,账号默认为 root,修改密码成功之后,则进入到登入画面,即可输入 root 账号密码,进入查看。
如果需要关闭容器,使用 stop 命令,例如停止/开启已有的 gitlab( 例如 docker name 为 gitlab)
docker stop gitlab # 停止
docker start gitlab # 开启
如果发现启动不了 docker 的 gitlab,并提示端口 22 已被占用,可能就是 sshd 占用了端口。
关闭 ssh 即可:
/etc/init.d/ssh stop
当然,开启就是
/etc/init.d/ssh start
如果配置有错,需要修改 gitlab 的配置文件gitlab.rb
,可是使用命令
sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
去打开文件编辑。不过一旦打开了这个文件,就注意给external_url
参数,赋予一个有效的值。就是 gitlab 访问地址需要可用。
修改了配置文件,需要重启该容器使其生效:
docker restart gitlab
备份和还原用户数据
手动备份用户数据
目前除了设定了一个 root 账号的密码之外,其它什么都没有,我现在备份一次此时的 gitlab user data,使用指令
docker exec -it gitlab gitlab-rake gitlab:backup:create
备份成功之后,默认位置在存放 data 的路径下,也就是创建并运行容器时的配置路径:/srv/gitlab-ce/data/backups
。
在 root 权限或者当前用户取得该文件夹权限后,可以看到该文件夹内部文件,gitlab-ce 备份的用户数据的格式例如:
{时间戳10位}_{年_月_日}_{gitlab版本号}_gitlab_backup.tar
或者可直接使用命令行查看:docker exec -it gitlab ls /var/opt/gitlab/backups/
还原备份的文件
备份之后,后续作业如果出现问题,可以还原到这个原始版本;当然,如果定时备份,则可以随时还原到需要的时间节点版本。
还原命令:
docker exec -it gitlab /opt/gitlab/bin/gitlab-rake gitlab:backup:restore BACKUP={时间戳10位}_{年_月_日}_{gitlab版本号}
BACKUP=后面输入需要返回的备份文件名称
注意,gitlab 只能还原版本相同的备份文件,版本不同不能还原。
使用 docker 安装就像是装在了沙盒,不想要了可以直接删除,没有什么顾虑。但是操作起来比较麻烦,毕竟中间隔了一层。用于测试等轻量使用较宜。
网友评论