gitlab從apt-get轉(zhuǎn)docker

原來(lái)公司的gitlab是通過(guò)apt-get安裝的,本身gitlab依賴(lài)的服務(wù)也特別多,所以想要將目前的gitlab轉(zhuǎn)入docker部署。

gitlab的數(shù)據(jù)還是比較重要的,所以還是得先備份。我是用了阿里云自帶的快照把整個(gè)磁盤(pán)都備份了一下。

PS:目前還沒(méi)有在正式環(huán)境上做這件事,下面所有事情是本地測(cè)試的。

備份還原必須是在同一個(gè)版本下操作的,目前線(xiàn)上最新的備份版本是gitlab-ce:9.0.1的,所以我先要起一個(gè)9.0.1版本的gitlab鏡像。

所有版本鏡像都可以看這里

我采用的是docker-compose的方式進(jìn)行部署。官方文檔可以看這里

我的docker-compose.yml如下:

gitlab:
  image: 'gitlab/gitlab-ce:9.0.1-ce.0'
  restart: always
  hostname: 'localhost'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://localhost'
  ports:
    - '8080:80'
    - '443:443'
    - '22:22'
  volumes:
#   - '/srv/gitlab/config:/etc/gitlab'
#   - '/srv/gitlab/logs:/var/log/gitlab'
#   - '/srv/gitlab/data:/var/opt/gitlab'
    - '/Users/Steven/Desktop/gitlab/config:/etc/gitlab'
    - '/Users/Steven/Desktop/gitlab/logs:/var/log/gitlab'
    - '/Users/Steven/Desktop/gitlab/data:/var/opt/gitlab'

一切就緒,使用docker-compose up -d啟動(dòng)docker。我是用docker-compose up啟用的,便于查看輸出。

這時(shí)候打開(kāi)http://localhost:8080就能看到默認(rèn)的gitlab網(wǎng)頁(yè)了。

屏幕快照 2017-03-30 14.57.15.png

我用scp命令下載好了服務(wù)器上的備份1490846041_2017_03_30_gitlab_backup.tar,這些備份都是在升級(jí)gitlab版本的時(shí)候自動(dòng)備份的,目錄在/var/opt/gitlab/backups/,我沒(méi)有打開(kāi)自動(dòng)備份,因?yàn)榘⒗镌崎_(kāi)了每日自動(dòng)快照。

下面要做的就是恢復(fù)這些數(shù)據(jù)了。我參考了(這里)[https://gitlab.com/gitlab-org/gitlab-ce/issues/2693]的命令,但是某兩條命令好像有一點(diǎn)問(wèn)題,我稍微改了一下。

# 先把備份的文件拷貝到docker里面,也可以直接拷貝到mapping的volumn指定位置。
docker cp /path/to/file/1490846041_2017_03_30_gitlab_backup.tar docker-container-id:/var/opt/gitlab/backups
# 進(jìn)入docker
docker exec -it docker-container-id bash
# 設(shè)置文件夾權(quán)限
chmod -R 775 /var/opt/gitlab/backups
# 停止兩個(gè)服務(wù),而不是所有服務(wù)
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 從備份中恢復(fù)
gitlab-rake gitlab:backup:restore BACKUP=1490846041_2017_03_30
# 修改文件夾所有者
chown -R git /var/opt/gitlab/gitlab-rails/uploads
# OK了,接下來(lái)是收尾
gitlab-ctl reconfigure
gitlab-ctl start

接下來(lái)刷新http://localhost:8080就可以發(fā)現(xiàn),原來(lái)gitlab上面的用戶(hù)信息,配置等等都恢復(fù)了。當(dāng)然,除了代碼。

屏幕快照 2017-03-30 14.58.03.png

接下來(lái)我我還沒(méi)做的事情是恢復(fù)代碼。我想應(yīng)該只需要把/var/opt/gitlab/*目錄拷貝一份到/Users/Steven/Desktop/gitlab/data/*應(yīng)該就沒(méi)啥問(wèn)題了。鑒于代碼文件比較大,目前我還沒(méi)把這個(gè)文件夾拉取到本地測(cè)試,當(dāng)然我后面會(huì)去驗(yàn)證我的想法。

總之大致上是實(shí)現(xiàn)了我們的需求了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容