设为首页 收藏本站
查看: 844|回复: 0

[经验分享] 把Gitlab迁移到Docker容器里

[复制链接]

尚未签到

发表于 2017-12-6 11:09:20 | 显示全部楼层 |阅读模式
把Gitlab迁移到Docker容器里
  Apr 9, 2015. | By: 任怀林


  公司的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 FAQ —— Docker 使用常见问题(持续更新中)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421208-1-1.html 上篇帖子: Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2) 下篇帖子: gitlab + jenkins + docker + k8s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表