2

Gitlab迁移(Docker版)

起因

公司的gitlab之前一直是安装在阿里云上的,考虑到隐私因素和安全性,准备迁移到本地的内网服务器内。而且容器化现在的流行和一些好的特性,准备这次用docker来部署gitlab。

分析

之前的gitlab用的一键安装包,数据库是postgresql

规划

启动三个docker容器
一个容器运行gitlab 
一个容器运行postgresql,然后 link到gitlab上。 
一个容器运行Redis,然后 link到gitlab上。

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 容器

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

先把老版的Gitlab image pull回来

sudo docker pull sameersbn/gitlab:8.16.6

创建数据目录

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 

pcChao
45 声望11 粉丝

一个菜鸟,专职是Java和大数据开发,兴趣是编程语言原理和linux操作系统