阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

把Gitlab迁移到Docker容器里

128次阅读
没有评论

共计 3520 个字符,预计需要花费 9 分钟才能阅读完成。

公司的 gitlab 一直是运行在 ovm 的虚拟机里的,版本还是 6.7.5。版本有点老了,最近在研究 docker,于是想把 gitlab 迁移到 docker container 里去。发现真的有人已经做了 gitlab 的 image 了,真心赞。

1 规划

规划:
一个容器运行 gitlab
一个容器运行 MySQL, 然后 link 到 gitlab 上。
一个容器运行 Redis, 然后 link 到 gitlab 上。

2 安装 gitlab

我们先运行 MySQL,

$ sudo docker pull sameersbn/mysql:latest

在 host 主机上创建 mysql 的数据目录。

$ sudo mkdir -p /opt/mysql/data

启动 MySQL 容器。

$ sudo docker run --name mysql -d \
    -v /opt/mysql/data:/var/lib/mysql \
    sameersbn/mysql:latest

连接到 MySQL 上,修改授权信息

$ sudo docker exec -it mysql bash

创建数据库并授权。

CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER \
ON `gitlabhq_production`.* TO 'gitlab'@'172.17.%.%' IDENTIFIED BY 'dbpassword';
FLUSH PRIVILEGES;

3 配置 redis

Pull image

$ sudo docker pull sameersbn/redis:latest

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

4 Gitlab

Pull 先把老版的 imagepull 回来

$ sudo docker pull sameersbn/gitlab:6.7.5

创建数据目录

$ sudo mkdir -p /opt/gitlab/data

这个目录会映像到窗口的 /home/git/data 目录上,所以这里保存了所有的数据,请一定不要删除这里的内容。

运行 gitlab 容器, 进行设置,容器会进行数据库的 migration 等操作。

$ sudo docker run --name gitlab -i -t --rm --link mysql:mysql \
  -e "DB_USER=gitlab" -e "DB_PASS=dbpassword" \
  -e "DB_NAME=gitlabhq_production" \
  -v /opt/gitlab/data:/home/git/data \
  sameersbn/gitlab:6.7.5 app:rake gitlab:setup

运行 gitlab 容器

$ sudo docker run --name gitlab -d -P --link mysql:mysql \
  -e "DB_USER=gitlab" -e "DB_PASS=dbpassword" \
  -e "DB_NAME=gitlabhq_production" \
  -v /opt/gitlab/data:/home/git/data \
  sameersbn/gitlab:6.7.5
# 从原来 gitlab 里导出备份
$ cd /home/git/gitlab
$ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production

导出的文件放在 /home/git/gitlab/tmp/backups 这个目录下。

把这个文件 scp 到 docker gitlab 那台机器的/opt/gitlab/data/backups

登录到 gitlab 的 container

$ sudo docker exec -it gitlab bash

在容器里执行下面的命令

$ cd /home/git/gitlab
$ sudo -u git -H  bundle exec rake gitlab:backup:restore RAILS_ENV=production
$ exit

这个样数据就全部到新的 gitlab 上了。你会发现跟原来的一样。

下面我们来升级 gitlab 到新版。

$ sudo docker stop gitlab
$ sudo docker rm gitlab

$ sudo docker run --name gitlab -d -P --link mysql:mysql \
  --link redis:redisio \
  -e "DB_USER=gitlab" -e "DB_PASS=dbpassword" \
  -e "DB_NAME=gitlabhq_production" \
  -v /opt/gitlab/data:/home/git/data \
  sameersbn/gitlab:latest

配置好以后,把它保存成一个镜像。

$ sudo docker commit -m "update gitlab.yml ,change host,set timezone to BeiJing" -a "china-ops gitlab v7.9.4" 6af1d0739ae0 china-ops/gitlab:7.9.4

我原来的想法是修改 config/gitlab.yml,把 host,timezone 等修改好,然后存成一个新的 image。后来发现修改 config/gitlab.yml 是不生效的,重启 container 后就会恢复默认值。后来看了文档才知道,hostname 等是通过环境变量来控制的。

用这个镜像来启动一个 container

$ sudo docker run --name gitlab -d  \
  -p 80:80  -p 8443:443 \
  --link mysql:mysql \
  --link redis:redisio \
  -e "DB_USER=gitlab" -e "DB_PASS=dbpassword" \
  -e "DB_NAME=gitlabhq_production" \
  -e "GITLAB_HOST=gitlab.china-ops.com" \
  -e "GITLAB_TIMEZONE=Beijing" \
  -e 'GITLAB_BACKUPS=daily' \
  -e "GITLAB_GRAVATAR_ENABLED=false" \
  -v /opt/gitlab/data:/home/git/data \
  china-ops/gitlab:7.9.4

参数-e 'GITLAB_BACKUPS=daily' 是备份策略,我们设置为每天

默认的密码:
username: admin@local.host
password: 5iveL!fe

参考:
https://github.com/openstack/keystone/blob/master/tools/sample_data.sh
https://github.com/gc3-uzh-ch/gridka-school/blob/master/tutorial/nova_api.rst

更多 Docker 相关教程见以下内容

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm 

Ubuntu 使用 VNC 运行基于 Docker 的桌面系统  http://www.linuxidc.com/Linux/2015-08/121170.htm

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm 

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/126227.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3520字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中