1 搭建
-
获取 docker 镜像
docker pull gitlab/gitlab-ce:latest
-
宿主机上准备 3 个目录,和 docker 容器共享,用于存放 gitlab 的数据
mkdir /home/tanrui/gitlab-server/config mkdir /home/tanrui/gitlab-server/logs mkdir /home/tanrui/gitlab-server/data
-
创建容器:
docker run \ -itd \ -p 9980:80 \ -p 9922:22 \ -v /home/tanrui/gitlab-server/config:/etc/gitlab \ -v /home/tanrui/gitlab-server/logs:/var/log/gitlab \ -v /home/tanrui/gitlab-server/data:/var/opt/gitlab \ --restart always \ --privileged=true \ --name gitlab3 \ gitlab/gitlab-ce:latest # -p 9980:80 宿主机的 9980 端口映射到 docker 的 80 端口 # -v /home/tanrui/gitlab-server/config:/etc/gitlab # 宿主机的 /home/tanrui/gitlab-server/config 目录映射到 docker 的 /etc/gitlab # --restart always 容器自启动 # --privileged=true 让容器获取宿主机root权限 # --name gitlab 设置容器名称为gitlab # gitlab/gitlab-ce:latest 镜像的名称,这里也可以写镜像ID
-
进入容器:
docker exec -it gitlab /bin/bash
修改 gitlab 配置文件
/etc/gitlab/gitlab.rb
:external_url 'http://192.168.3.4' # 宿主机的 ip,默认 80 端口 ## ssh 默认22端口,可以用后文方法更改,主要是解决克隆工程 #gitlab_rails['gitlab_ssh_host'] = '192.168.3.4' #gitlab_rails['gitlab_shell_ssh_port'] = 9922
执行:
gitlab-ctl reconfigure
网页上即可访问:
http://192.168.3.4:9980
-
修改 root 密码:
# 进入容器内部 docker exec -it gitlab /bin/bash # 进入控制台 gitlab-rails console -e production # 查询id为1的用户,id为1的用户是超级管理员 u = User.where(id:1).first # 修改密码为tr123456 u.password='tr123456' # 保存 u.save! # !!!这里有感叹号 # 退出 exit
-
在页面中,克隆工程有 SSH 和 HTTP,克隆失败主要时端口映射的问题:例如 SSH,显示的 clone 地址是:
git@192.168.3.4:root/first.git
,默认是访问 22 端口,由于创建 docker 容器的时候指定了端口映射:主机 9922 >>> docker 22,所以要更改访问的端口:ssh://git@192.168.3.4:9922/root/first.git
。HTTP 的 clone 一样会有问题。解决这个问题可以修改文件:/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
:gitlab: ## Web server settings (note: host is the FQDN, do not include http://) host: 192.168.3.4 port: 9980 # http 的端口(和 docker 映射一致) https: false # .... ssh_port: 9922 # ssh 的端口(和 docker 映射一致)
修改后重启
gitlab-ctl restart
,然后在页面上就可看见 clone 地址的变化。
注意:不要gitlab-ctl reconfigure
!因为重新配置之后上面修改的会被冲掉!
备份
- 备份这两个配置文件:
/etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json
- gitlab停止数据服务:
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq
- 执行备份命令:
会在目录gitlab-backup create
/var/opt/gitlab/backups/
生成1660464164_2022_08_14_14.6.1_gitlab_backup.tar
类似文件。
迁移
- 复制
1660464164_2022_08_14_14.6.1_gitlab_backup.tar
到新的 gitlab 上:cp 1660464164_2022_08_14_14.6.1_gitlab_backup.tar /var/opt/gitlab/backups/
- 恢复:
gitlab-backup restore BACKUP=1660464164_2022_08_14_14.6.1
- 复制配置文件到对应位置:
cp gitlab.rb /etc/gitlab/ cp gitlab-secrets.json /etc/gitlab/
- 重新加载配置:
gitlab-ctl reconfigure
- 恢复数据服务
gitlab-ctl start unicorn gitlab-ctl start sidekiq