美文网首页ITGit技术文
使用Docker部署Gitlab

使用Docker部署Gitlab

作者: 阳春面 | 来源:发表于2015-06-14 18:33 被阅读1297次

    由于公司的代码服务器已使用Gitosis搭建,但由于用户和权限管理太麻烦,
    现在想在原有服务器上再搭建Gitlab,使用Gitlab官方方法直接安装,
    会导致与Gitosis冲突,使得Gitosis不可用,
    因为要保持两个服务同时存在,所以就想到利用Docker来搭建Gitlab。

    以下以Ubuntu 14.04为例安装Docker和Gitlab

    安装Docker

    在bash中输入命令安装最新的docker

    sudo apt-get purge docker.io
    curl -s https://get.docker.io/ubuntu/ | sudo sh
    sudo apt-get update
    sudo apt-get install lxc-docker
    

    下载镜像

    以下脚本会下载gitlab,mysql,redis镜像

    docker pull sameersbn/gitlab:latest
    docker pull sameersbn/mysql:latest 
    docker pull sameersbn/redis:latest
    

    启动redis

    docker run \
      --name=gitlab_redis \
      -tid \
      sameersbn/redis:latest
    

    启动mysql

    mkdir -p /opt/gitlab/mysql
    docker run \
      --name=gitlab_mysql \
      -tid \
      -e 'DB_NAME=gitlabhq_production' \
      -e 'DB_USER=gitlab' \
      -e 'DB_PASS=password' \
      -v /opt/gitlab/mysql:/var/lib/mysql \
      sameersbn/mysql:latest
    

    启动gitlab

    mkdir -p /opt/gitlab/data /opt/gitlab/log
    docker run \
      --name='gitlab' \
      -itd \
      --link gitlab_mysql:mysql \
      --link gitlab_redis:redisio \
      -e 'GITLAB_PORT=80' \
      -e 'GITLAB_SSH_PORT=22' \
      -p 10022:22 -p 10080:80 \
      -v /var/run/docker.sock:/run/docker.sock \
      -v $(which docker):/bin/docker \
      -v /opt/gitlab/data:/home/git/data \
      -v /opt/gitlab/log:/var/log/gitlab \
      sameersbn/gitlab:latest
    

    这一步骤会耗时几分钟,因为这一步会做一些初始化操作,我们可以通过docker logs gitlab来查看安装过程。
    我们指定了10022作为ssh的访问端口,10080作为http的访问端口,

    执行完后,稍微过1-2分钟后,打开以下地址应该就可以访问gitlab了
    http://localhost:10080
    如果是在服务器上搭建,请替换localhost为服务器地址

    加入开机启动

    加入/etc/rc.local

    echo 'docker start gitlab_redis' >> /etc/rc.local
    echo 'docker start gitlab_mysql' >> /etc/rc.local
    echo 'docker start gitlab' >> /etc/rc.local
    

    如何进入docker中的服务器

    • 如果使用的时1.3.0版本以上的Docker,使用以下命令:
    docker exec -it gitlab bash
    
    • 如果是使用更老的版本,使用以下命令:
    docker run --rm --volume=/usr/local/bin:/target jpetazzo/nsenter
    sudo docker-enter gitlab
    

    备份和恢复gitlab

    • 备份
    docker stop gitlab && docker rm gitlab
    docker run --name=gitlab -it --rm [OPTIONS] \
      sameersbn/gitlab:latest app:rake gitlab:backup:create
    
    • 恢复
    docker stop gitlab && docker rm gitlab
    docker run --name=gitlab -it --rm [OPTIONS] \
      sameersbn/gitlab:latest app:rake gitlab:backup:restore
    

    升级gitlab

    • 重新pull gitlab镜像
    docker pull sameersbn/gitlab:7.11.4
    
    • 停止和删除当前的gitlab进程
    docker stop gitlab
    docker rm gitlab
    
    • 重新启动gitlab
    docker run \
      --name='gitlab' \
      -itd \
      --link gitlab_mysql:mysql \
      --link gitlab_redis:redisio \
      -e 'GITLAB_PORT=80' \
      -e 'GITLAB_SSH_PORT=22' \
      -p 10022:22 -p 10080:80 \
      -v /var/run/docker.sock:/run/docker.sock \
      -v $(which docker):/bin/docker \
      -v /opt/gitlab/data:/home/git/data \
      -v /opt/gitlab/log:/var/log/gitlab \
      sameersbn/gitlab:latest
    

    本文作者: 阳春面
    本文出处:http://www.aswifter.com/2015/06/14/gitlab-with-docker/
    转载请在开头注明本文出处。

    欢迎关注我的微信公众号,分享Swift开发,Android 开发和互联网内容
    微信号:APP开发者

    相关文章

      网友评论

      • 向日花开:v $(which docker):/bin/docker \ 中$(which docker)是啥?
      • ab5d19fed9b9:如何保证数据和服务器稳定呢?用 docker 安装确实好简单。装完之后有点心虚,请教一下如果是企业用,如何保证代码不会因为异常丢失?
        阳春面:@看不到脚趾头的龙猫 代码其实是放在容器外部的,这样升级或重新安装gitlab都没有关系

      本文标题:使用Docker部署Gitlab

      本文链接:https://www.haomeiwen.com/subject/eezjqttx.html