公司的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