gitlab 迁移 gitlab 升级 gitlab docker 部署,你要的 这里都有
gitlab 迁移 gitlab 升级 gitlab docker 部署,你要的 这里都有
1. 说明
1.1 为什么选择docker方式部署gitlab
gitlab 还是需要定期升级滴,还有程序尽量要容器化部署,降低维护的难度,以及不用把自己的程序和操作系统绑定
这个教程会把传统方式搭建的gitlab 迁移到docker中,之后通过逐级升级的方式升级gitlab版本到最新
2. 具体的步骤
- 旧gitlab服务器创建备份文件
- 新的服务器安装docker环境,并且启动和旧gitlab一样版本的docker版giltab
- 把旧gitlab备份文件 导入到新服务器的docker容器中
- 根据gitlab的官方升级方法,逐级升级新服务器的docker镜像的版本号(建议升级前做个系统快照,便于回滚)
- 验收,以及把旧服务器的IP绑定到新服务器上
2.1 旧gitlab服务器创建备份文件
#运行备份数据到命令,备份文件默认在/var/opt/gitlab/backups ,如果没有请查找/etc/gitlab/gitlab.rb backup相关配置
#
gitlab-rake gitlab:backup:create
#有两个文件需要手工备份
#gitlab.rb路径:/etc/gitlab/gitlab.rb
#gitlab-secrets.json路径:/etc/gitlab/gitlab-secrets.json
#备份文件名称为1654270645_2022_06_03_12.0.3_gitlab_backup.tar
看截图
2.2 新的服务器安装docker环境,并且启动和旧gitlab一样版本的docker版giltab
2.2.1 安装docker和docker-compose
官方地址安装
yum remove docker-common -y
cd /etc/yum.repos.d/
wget https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl enable docker
systemctl start docker
docker-compose 安装
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2.2.2 docker的具体配置
建议先去官方看看,https://docs.gitlab.com/ee/install/docker.html
mkdir /usr/local/gitlab
cd gitlab
mkdir backup config data logs ssl
cat << "EOF" > docker-compose.yaml
version: '3.6'
services:
web:
image: 'gitlab/gitlab-ce:12.0.3-ce.0'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
letsencrypt['enable'] = false
nginx['ssl_client_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
- './ssl:/etc/gitlab/ssl'
- './backup:/var/opt/gitlab/backups'
shm_size: '256m'
EOF
#自己准备证书,证书位置请放到当前目录的 ssl/gitlab.example.com.crt 和 ssl/gitlab.example.com.key
# 为啥要自备,因为gitlab不建议放公网,自带的let's encrypt方式申请证书,需要公网访问,不安全
docker-compose up -d
2.3 把旧gitlab备份文件 导入到新服务器的docker容器中
把旧服务器的备份文件 例如 1654270645_2022_06_03_12.0.3_gitlab_backup.tar 放到 对应的文件夹内
cd /usr/local/gitlab
cd backup
mv xxx/1654270645_2022_06_03_12.0.3_gitlab_backup.tar .
docker exec -it gitlab_web_1 /bin/bash
gitlab-rake gitlab:backup:restore BACKUP=1654270645_2022_06_03_12.0.3 #注意 恢复时需要指定此前备份的名称(但是不需要写名称的_gitlab_backup.tar后缀)
#从旧服务器上复制/etc/gitlab/gitlab.rb 和 /etc/gitlab/gitlab-secrets.json 到容器中
#退出容器,重启容器
4. 根据gitlab的官方升级方法,逐级升级新服务器的docker镜像的版本号
4.1 官方的关于版本升级的说明 https://docs.gitlab.com/ee/update/index.html#upgrade-paths
比如当前版本是12.0.3 ,需要先升级到12.0.12 然后12.1.17 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.15 -> 14.0.12 ||||| -> 14.6.2 -> 14.9.4 -> 14.10.3 -> 15.0.0
知道了版本号,然后去hub.docker.com的gitlab/gitlab-ce项目查找对应的镜像名称
4.2 升级
找到具体每个版本的镜像名,修改docker-compose.yaml中的镜像名称,
然后docker-compose down && docker-compose up -d
查看docker的日志docker logs gitlab_web_1 -f ,日志正常后,打开网站看看,没有毛病后,继续修改docker-comose.yaml 中的镜像名称,继续重启容器