gitlab的安装与配置

用docker来安装gitlab,本地访问gitlab并进行相关配置,备份gitlab数据,从备份恢复gitlab。 Modified: 2023-07-04 20:24:23 Created: 2021-08-22 09:50:08 Tags: #gitlab #git #docker #linux

gitlab是一个非常方便的代码管理工具。直接安装配置 gitlab 十分麻烦,还容易把环境搞坏。而通过 docker,则可以在一个隔离的环境快速部署 gitlab。通过 docker 运行起来之后,还需要对 gitlab 进行一些配置。虽然是 docker 环境,还是有数据备份和恢复的需求。

1 docker 安装 gitlab

需要安装 docker,如何安装 docker,请参考本网站。

1.1 docker 取得镜像(非必要)

一般来说并不需要,如果 docker 运行时发现缺少相关包,会自动拉取。但也可手动操作 gitlab-ce(Community Edition):

docker pull gitlab/gitlab-ce

docker images | grep gitlab

1.2 用 docker 启动 gitlab

BASEDIR=/data/.docker
docker run \
-d \
-p 444:443 \
-p 8083:80 \
-p 222:22 \
--name gitlab \
--restart always \
-v $BASEDIR/config:/etc/gitlab \
-v $BASEDIR/logs:/var/log/gitlab \
-v $BASEDIR/data:/var/opt/gitlab \
gitlab/gitlab-ce
  • 端口映射
  • 444端口映射443端口,gitlab 支持用 https
  • 8083端口映射80端口,gitlab 支持 http
  • 222端口映射22端口,用于 ssh
  • 存储映射
  • /etc/gitlab记录了配置
  • /etc/log/gitlab是 log 文件
  • /var/opt/gitlab中记录了进阶配置

要等待一段时间(gitlab 启动速度真是慢呢)。在宿主机上访问localhost:8083就能进入 gitlab 的配置页面了。

然而通常宿主机是没有图形界面的,而是在另外的机器上通过http://host_ip:8083的方式访问。此时需要在宿主机(host)上开启防火墙8083端口。

2 配置 gitlab

2.1 账户密码配置

首先会让设定 root 账户的密码。root 账户 id1。root 账户密码一定要设定,后面再在创建自己账户的时候,需要这个账户的同意。 配置gitlab账户

配置完成之后退出 root 账户,再“注册”一个账户,后面所有操作都在新注册的账户上进行。注册完成之后,还需再次登陆 root 账户,同意自己注册的那个账户。

2.2 git clone 网址配置

git clone时候可以选择 http 或者 ssh 协议。这些协议默认地址是容器名字,出了容器环境就不能使用了,需要修改为宿主机上地址。另外,在宿主机上的 gitlab 的 ssh 端口被映射为222,也需要配置。有两种方式可以修改:

宿主机中修改$BASE_DIR/config/gitlab.rb

# 配置http协议所使用的访问地址,如果不加端口号默认为80
external_url 'http://10.10.10.11:8083'
# 这里修改会影响nginx的运行端口,修改完成之后需要修改docker运行的命令

gitlab_rails['gitlab_ssh_host'] = '10.10.10.11'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口

一定要转发 22 端口到自己设定的 gitlab_shell_ssh_port。删除原来的容器重新启动:

docker stop gitlab
docker rm gitlab
BASEDIR=/data/.docker
docker run \
-d \
-p 444:443 \
-p 8083:8083 \
-p 222:22 \
--name gitlab \
--restart always \
-v $BASEDIR/config:/etc/gitlab \
-v $BASEDIR/logs:/var/log/gitlab \
-v $BASEDIR/data:/var/opt/gitlab \
gitlab/gitlab-ce

使用环境变量

在 docker 启动的命令添加环境变量:

docker stop gitlab
docker rm gitlab
BASEDIR=/data/.docker
IP=host_ip
GITLAB_PORT=8083
docker run \
-d \
-p 444:443 \
-p $GITLAB_PORT:8083 \
-p 222:22 \
--name gitlab \
--restart always \
-v $BASEDIR/config:/etc/gitlab \
-v $BASEDIR/logs:/var/log/gitlab \
-v $BASEDIR/data:/var/opt/gitlab \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://${IP}:${GITLAB_PORT}'; \
    gitlab_rails['lfs_enabled'] = true; \
    gitlab_rails['gitlab_ssh_host'] = '${IP}'; \
    gitlab_rails['gitlab_shell_ssh_port'] = ${GITLAB_SSH_PORT};"
gitlab/gitlab-ce

再进入网页,就会发现 ssh 和 http 的地址都变了。

3 gitlab 备份与恢复

3.1 备份 gitlab 到文件

数据备份很重要,要支持备份,则需要在启动过程中添加环境变量:

gitlab_rails['manage_backup_path'] = true; \
gitlab_rails['backup_path'] = '${CONTAINER_PATH_FOR_GITLAB_BACKUP}'; \
gitlab_rails['backup_archive_permissions'] = 0644; \
gitlab_rails['backup_keep_time'] = 604800;" \

要进行备份的时候,运行:

docker exec -it gitlab gitlab-rake gitlab:backup:create

然后就会在${CONTAINER_PATH_FOR_GITLAB_BACKUP}这个地方生成备份文件。

3.2 从文件恢复 gitlab

还是用 docker:

docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=path_to_backup_file

注意这里的path_to_backup_file是绝对路径。在恢复过程中可能有些 warning,可以不用管。

总结

本文介绍了用 docker 运行 gitlab-ce 的方式,包括初次运行以及外部访问时候路径的配置。最后介绍了 gitlab 数据的备份以及从备份恢复数据的方式。