1. 程式人生 > >使用Docker來搭建gitlab(備份)

使用Docker來搭建gitlab(備份)

所有的團隊都面臨同樣一個問題,程式碼庫的版本管理。

gitlab可以說是開源的github,可以自行部署在任何地方。

那對於團隊來講,我要怎麼去部署、升級、備份、遷移才是最關鍵的地方。這個時候有了Docker這麼牛逼的東西出現了。

最最最根本的就是它不會影響你現有的環境

這裡不推薦使用官網的安裝方式,另外使用vagrant的同學們可以看過來了,docker才是王道。

這裡廢話一點,講點docker安裝的東西,瞭解的可以跳過。

安裝docker

這裡以centos6.5為例,其他詳見官網

wget http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
sudo yum update -y
sudo yum install -y docker-io
usermod -a -G docker your_user_name

Daocloud加速器

這個時候你就要用最最牛13的Daocloud加速器了,國內網路的福音啊。

狂點我註冊

這個時候只要根據官網提示進行使用即可,體驗飛一般的速度,不一樣的酸爽。這裡插入一段硬廣,DaoCloud不僅僅提供高速下載的加速器,他們是國內最早的一站式Docker應用打包釋出平臺,提供了持續整合、映象構建、釋出管理和容器託管的全套服務。

準備工作

有興趣的可以訪問docker映象首頁來看目前最棒的gitlab docker映象的官方使用指南。

docker pull sameersbn/gitlab:7.11.2
docker pull sameersbn/postgresql:9.4
docker pull sameersbn/redis:latest

上述的版本大家可以去上面的地址查詢最新的版本。

建立資料資料夾, 位置隨意,大家記下即可

mkdir /home/username/opt/gitlab/data
mkdir /home/username/opt/postgresql/data

啟動postgresql

docker run --name=postgresql -d \
-e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \
-v /home/username/opt/postgresql/data:/var/lib/postgresql \
sameersbn/postgresql:9.4

上述的位置與資料資料夾保持一致。

啟動redis

docker run --name=redis -d sameersbn/redis:latest

啟動gitlab

docker run --name='gitlab' -d \
--link redis:redisio \
-v /home/username/opt/gitlab/data:/home/git/data \
-p 10022:22 -p 10080:80 \
-e 'GITLAB_PORT=10080' \
-e 'GITLAB_SSH_PORT=10022' \
--link postgresql:postgresql \
-e '[email protected]' \
-e 'GITLAB_BACKUPS=daily' \
-e 'GITLAB_HOST=gitlab.daocloud.io' \
-e 'GITLAB_SIGNUP=true' \
-e 'GITLAB_GRAVATAR_ENABLED=false' \
sameersbn/gitlab:7.11.2

上述的位置與資料資料夾保持一致,更多引數請見這裡

上述設定會每天自動進行備份,建議開啟。

手動備份


docker stop gitlab
docker rm gitlab

docker run --name='gitlab' -it --rm \
你的設定
sameersbn/gitlab:7.11.2 app:rake gitlab:backup:create

這樣就會在/home/username/opt/gitlab/data/backups下面建立備份,備份的所屬者請看下ls -la /home/username/opt/gitlab/data/backups下面的檔案,遷移的時候有用,另外遷移的話,也只需要保留這個備份出來的檔案即可。

恢復備份

確保你的gitlab的版本跟備份的版本一致。

docker run --name='gitlab' -it --rm \
你的設定
sameersbn/gitlab:7.11.2 app:rake gitlab:backup:restore

這樣就能確保遷移之後的版本跟遷移之前的版本一樣了。

遷移

這個時候你只要在目標機器上做完準備工作之後,啟動一次gitlab,然後把之前備份的檔案放到/home/username/opt/gitlab/data/backups下面,確保備份檔案的許可權問題之後恢復備份即可

升級

先備份,防止升級後出現問題,然後docker pull新的版本之後,直接run就可以了。

最後講一下,如何從你的庫來源完全映象到gitlab吧


git clone --mirror https://github.com/exampleuser/repository-to-mirror.git

git remote set-url --push origin https://github.com/exampleuser/mirrored

git fetch -p origin
git push --mirror

這個能保證你的來源在被提交的時候,gitlab能保持完全一致。最後只要指定時間關閉來源的提交之後久就可以無縫切換到gitlab了。