公司的gitlab以前一直是安裝在阿里雲上的,考慮到隱私因素和安全性,準備遷移到本地的內網服務器內。並且容器化如今的流行和一些好的特性,準備此次用docker來部署gitlab。git
以前的gitlab用的一鍵安裝包,數據庫是postgresqlredis
啓動三個docker容器
一個容器運行gitlab
一個容器運行postgresql,而後 link到gitlab上。
一個容器運行Redis,而後 link到gitlab上。 sql
docker的安裝的話這裏就不說了,自行去搜各個系統的安裝方法。docker
咱們先pull鏡像而後建立持久化目錄,數據庫
sudo docker pull sameersbn/postgresql:9.4 sudo mkdir -p /opt/postgresql/data
啓動postgresql容器。安全
docker run --name postgresql -d \ -e 'DB_NAME=gitlabhq_production' \ -e 'DB_USER=gitlab' \ -e 'DB_PASS=password' \ -e 'DB_EXTENSION=pg_trgm' \ -v /opt/postgresql/data:/var/lib/postgresql \ sameersbn/postgresql:9.4
先pull redis image服務器
sudo docker pull sameersbn/redis:latest
啓動 redis 容器app
sudo docker run --name=redis -d sameersbn/redis:latest
先把老版的Gitlab image pull回來dom
sudo docker pull sameersbn/gitlab:8.16.6
建立數據目錄gitlab
sudo mkdir -p /opt/gitlab/data
這個目錄會映像到窗口的/home/git/data目錄上,因此這裏保存了全部的數據,請必定不要刪除這裏的內容。
初始化
而後配置容器
docker run --name gitlab -i -t --rm --link postgresql:postgresql --link redis:redisio \ -e "DB_USER=gitlab" -e "DB_PASS=password" \ -e "DB_NAME=gitlabhq_production" \ -e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \ -e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \ -e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \ -v /opt/gitlab/data:/home/git/data \ sameersbn/gitlab:8.16.6 app:rake gitlab:setup
恢復
這裏要先把以前的備份放在/opt/gitlab/data/backup 下面
BACKUP 參數是備份名的前綴
docker run --name gitlab -it --rm \ -p 10022:22 -p 10080:80 \ --link postgresql:postgresql --link redis:redisio \ -e "DB_USER=gitlab" -e "DB_PASS=password" \ -e "DB_NAME=gitlabhq_production" \ -e "GITLAB_HOST=10.21.12.14" \ -e "GITLAB_TIMEZONE=Beijing" \-e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \ -e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \ -e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \ -v /opt/gitlab/data:/home/git/data \ sameersbn/gitlab:8.16.6 app:rake gitlab:backup:restore BACKUP=1504835793_2017_09_08
這個樣數據就所有到新的gitlab上了。
你會發現跟原來的同樣。
啓動容器
(注意:GITLAB_HOST=192.168.1.100:10080 這個參數要配置本身服務器的地址,而且帶上綁定的端口,否則在網頁端操做時會有問題)
docker run --name gitlab -d \ -p 10022:22 -p 10080:80 \ --link postgresql:postgresql --link redis:redisio \ -e "DB_USER=gitlab" -e "DB_PASS=password" \ -e "DB_NAME=gitlabhq_production" \ -e "GITLAB_HOST=192.168.1.100:10080" \ -e "GITLAB_TIMEZONE=Beijing" \ -e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \ -e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \ -e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \ -v /opt/gitlab/data:/home/git/data \ sameersbn/gitlab:8.16.6