因爲前兩天本地開發服務器接二連三出了問題,我們擔心
gitlab
和數據庫的數據丟失,發生災難性的問題。
藉此機會,將三臺
Centos6.5
的系統都升級到Centos7.x
,9012年都要結束啦,怎麼能還不推動一下團隊成員對Docker
的使用率。
遷移源gitlab | 遷移目的gitlab | 版本 |
---|---|---|
yum安裝 | docker 運行gitlab | 11.9.8 |
遷移步驟
1、備份舊gitlab數據
gitlab-rake gitlab:backup:create
yum安裝默認會保存在 /var/opt/gitlab/backups
,實際情況可以使用find
查找下文件路徑
2、在新服務器上使用docker搭建相同版本的gitlab
version: '3'
services:
gitlab:
image: 'gitlab/gitlab-ce:11.9.8-ce.0'
restart: always
container_name: compose-gitlab-ce
hostname: 'gitlab.example.com'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 需要配置到 gitlab.rb 中的配置可以在這裏配置,每個配置一行,注意縮進。
# 比如下面的電子郵件的配置:
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "[email protected]"
# gitlab_rails['smtp_password'] = "password"
# gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
# gitlab_rails['gitlab_email_from'] = '[email protected]'
ports:
- '80:80'
- '443:443'
- '2222:22'
volumes:
- ./config:/etc/gitlab
- ./data:/var/opt/gitlab
- ./logs:/var/log/gitlab
在docker-compose.yml
文件的同級目錄創建三個目錄:
mkdir config
mkdir data
mkdir logs
執行 docker-compose up -d
啓動該容器,啓動的時間會比較長 耐心等待 5分鐘左右!!
3、拷貝文件到新服務器的docker中
docker cp ./1575650870_2019_12_06_11.9.8_gitlab_backup.tar compose-gitlab-ce:/var/opt/gitlab/backups
4、重建數據庫
tips
1575650870_2019_12_06_11.9.8_gitlab_backup.tar
這個文件是第一步備份的時候生成的。
docker exec -it compose-gitlab-ce /bin/bash
chmod 777 -R /var/opt/gitlab/backups/
gitlab-rake gitlab:backup:restore BACKUP=1575650870_2019_12_06_11.9.8
耐心等待一小會兒…
遷移完成!!! 重啓 gitlab
並驗證
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
大功告成 !!!
注意事項
gitlab版本必須一致,否則遷移失敗
解決 22 端口衝突的問題
- 修改宿主的 SSH 端口
具體操作細節請參考:【CentOS】CentOS7增加或修改SSH端口號的方法 - 修改容器的 SSH 端口 (本文采用的是此方法)
修改容器的端口映射關係,比如將 -p 22:22 改爲 -p 2222:22,這樣 GitLab 的 SSH 服務端口將是 2222。
這樣做會讓使用 GitLab 的 SSH 克隆、提交代碼有些障礙。這種情況要改變用戶使用 Git 的鏈接方式。# 要從之前的: git clone [email protected]:myuser/awesome-project.git # 改爲明確使用 ssh:// 的 URL 方式。 git clone ssh://[email protected]:2222/myuser/awesome-project.git