Docker下搭建gitlab

一、GitLab简介

GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。Github是公共的git仓库,而Gitlab适合于搭建企业内部私有git仓库

  • 官网:

    https://about.gitlab.com/
    
    https://github.com/gitlabhq/gitlabhq
  • 截止本文创建时间,GitLab最新版本为v7.4.3

二、组件

7.4.3之前版本,镜像里包含所有组件,7.4.3版本镜像里只包含核心组件:nginx、sshd、ruby on rails、sidekiq,sameersbn/gitlab是基于ubuntu镜像的
前端:Nginx,用于页面及Git tool走http或https协议
后端:Gitlab服务,采用Ruby on Rails框架,通过unicorn实现后台服务及多进程
SSHD:开启sshd服务,用于用户上传ssh key进行版本克隆及上传。注:用户上传的ssh key是保存到git账户中
数据库:目前仅支持MySQL和PostgreSQL
Redis:用于存储用户session和任务,任务包括新建仓库、发送邮件等等
Sidekiq:Rails框架自带的,订阅redis中的任务并执行

三、架构

四、GitLab安装部署

包含一切的RPM包: https://about.gitlab.com/downloads/ (官方推荐)

个人不推荐,因为RPM包容量太大,200多M,适合于Linux初学者,未尝试过

4.1、本文主要介绍docker下安装:

采用docker镜像安装GitLab

4.2、下载镜像

  • docker pull sameersbn/gitlab:7.4.3 # 下载gitlab镜像
  • docker pull sameersbn/mysql:latest # 下载gitlab所用到的mysql镜像
  • docker pull sameersbn/redis:latest # 下载gitlab所用到的redis镜像

4.2.1、启动redis

  • 命令:

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

4.2.2. 启动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

4.2.3. 启动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‘ -e ‘GITLAB_HOST=gitlab.example.com‘ -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:7.4.3
    
    上述是开启一个基本gitlab。
    完整(包含LDAP、EMAIL):
    docker run --name=‘gitlab‘ -itd --link gitlab_mysql:mysql --link gitlab_redis:redisio -e ‘GITLAB_PORT=80‘ -e ‘GITLAB_SSH_PORT=22‘ -e ‘LDAP_ENABLED=true‘ -e ‘LDAP_HOST=192.168.1.1‘ -e ‘LDAP_PORT=389‘ -e ‘LDAP_UID=sAMAccountName‘ -e ‘LDAP_METHOD=plain‘ -e ‘[email protected]‘ -e ‘LDAP_PASS=passwd‘ -e ‘LDAP_BASE=OU=example_users,DC=example-family,DC=com‘ -e ‘LDAP_ACTIVE_DIRECTORY=true‘ -e ‘LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN=false‘ -e ‘GITLAB_HOST=gitlab.example.com‘ -e ‘SMTP_ENABLED=true‘ -e ‘SMTP_DOMAIN=example.com‘ -e ‘SMTP_HOST=192.168.1.2‘ -e ‘SMTP_PORT=25‘ -e ‘SMTP_STARTTLS=false‘ -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:7.4.3

这一步骤会耗时几分钟,因为这一步会做一些初始化操作,例如导入数据表结构等。可以通过docker logs gitlab来查看安装过程。同理,mysql、redis容器也可以通过docker logs gitlab_mysql和docker logs gitlab_redis来查看启动信息。

4.3、总docker-composer.yml文件

version: ‘2‘

services:
  redis:
    restart: always
    image: sameersbn/redis:latest
    command:
    - --loglevel warning
    volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:9.5-1
    volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm

  gitlab:
    restart: always
    image: sameersbn/gitlab:8.11.5
    depends_on:
    - redis
    - postgresql
    ports:
    - "10080:80"
    - "10022:22"
    volumes:
    - /srv/docker/gitlab/gitlab:/home/git/data:Z
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Kolkata
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=192.168.103.29
    - GITLAB_PORT=10080
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=[email protected]
    - GITLAB_EMAIL_REPLY_TO=[email protected]
    - GITLAB_INCOMING_EMAIL_ADDRESS=[email protected]

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=[email protected]
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=[email protected]
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

五、GitLab维护

由于gitlab容器在启动时已将宿主/opt/gitlab/data、/opt/gitlab/log目录挂载到容器里,因此可以在宿主上进入这2个目录中查看,另外可以通过docker logs查看

总体docker-compose中数据在/srv/docker/gitlab/gitlab/backups下

备份只会备份3个目录:repositories、db、uploads,然后会额外生成一个backup_information.yml文件

sameersbn/gitlab是基于ubuntu镜像的

迁移实现方式:
    可以使用gitlab备份与恢复的命令,实现数据的迁移

备份:

bundle exec rake gitlab:backup:create RAILS_ENV=production
    该备份命令会备份本地gitlab的所有项目的仓库以及mysql数据。

恢复:

bundle exec rake gitlab:backup:restore RAILS_ENV=production BACKUP=543143575

该恢复命令会导入备份中的mysql数据和项目仓库目录,并可以根据需要,从mysql库中的数据中重构~/.ssh/authorized_keys身份验证文件
注意:必须到容器里面 到git用户下,到/home/git/gitlab/下执行,不是data目录,不然会没有项目
 要把getlab的地址改成本地的地址,端口改成对外的端口10080和10022,不然没办法push。
第一个yes  第二个no



出处说明:

文章多摘抄:http://www.linuxidc.com/Linux/2016-05/131886.htm

下载地址;wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

出处;
https://github.com/sameersbn/docker-gitlab#postgresql

http://www.tuicool.com/articles/bYbi2mJ

出;http://www.mamicode.com/info-detail-1149868.html

时间: 2024-10-03 11:12:49

Docker下搭建gitlab的相关文章

在Docker下搭建Spark+HDFS集群

在Docker下搭建Spark+HDFS集群 1.      在VM中安装Ubuntu OS并实现root登录 (http://jingyan.baidu.com/article/148a1921a06bcb4d71c3b1af.html) 安装Vm增强工具 http://www.jb51.net/softjc/189149.html 2.      安装Docker docker安装方法一 ubuntu14.04以上的版本都是自带docker安装包的:所以可以直接安装:但是这个一般不是最先版本

在Docker下搭建Apache+PHP+mysql环境的过程记录

在Docker下搭建Apache+PHP+mysql环境的过程记录 这是一篇搭建Docker环境的过程记录,方便以后查看.主要记录了搭建所用到的工具,使用的命令和遇到的坑. 1. 安装Docker 第一步肯定是到Docker的官网(https://www.docker.com)上去下载安装包,目前有CE和EE两个版本,简单来说,CE就是免费版,EE就是收费版.因为我用的是Windows系统,这里就只讲在Windows系统上怎么安装. 也可以点这里直接下载Windows版.下好之后运行安装. 因为

Linux 使用 docker 下搭建xunsearch 搜索引擎服务

Linux 使用 docker 下搭建 xunsearch 搜索引擎服务 安装 docker 环境(菜鸟教程有说明) 安装docker说明 下载并运行 xunsearch 的服务端:docker安装xunsearch说明 docker 安装完毕后,开始安装xunsearch镜像 docker pull hightman/xunsearch 启动镜像 //镜像非开机自启 docker run --name xunsearch -d -p 8383:8383 -p 8384:8384 -v /var

docker下部署gitlab

docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全. Gitlab是目前比较流行的开源类Github代码管理平台.Gitlab使用Rails开发,使用PostgreSQL或MySQL数据库,Redis做缓存.一般自己搭建私有代码仓库,Gitlab通常是首选.这里简单介绍一下dockerized Gitlab. Gitlab的docker镜像早已有人做好

docker下运行Gitlab CE+Jenkins+Nexus3+docker-registry-frontend

DevOps - Gitlab CE - Jenkins - Nexus Gitlab CE https://hub.docker.com/r/gitlab/gitlab-ce/ https://docs.gitlab.com/omnibus/docker/README.html $ docker pull gitlab/gitlab-ce sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --pub

在docker 中搭建gitlab环境

docker run --name gitlab -it -p 10022:22 -p 10080:80 -p 4433:443 --env 'GITLAB_SECRETS_DB_KEY_BASE=Rpwq35wjLJ5N6CrkvdXsqTDHsh6XG3QkhdtRTkt87fvLwzvlmtdNWMCwNjDj5Xk9' --env 'DB_HOST=192.168.1.58' --env 'DB_NAME=gitlabhq_production' --env 'DB_USER=root'

linux下搭建gitlab

  GitLab GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用. 官方只提供了Debian/Ubuntu系统下的安装说明文档,如果需要在centos下安装,可以参考这篇:https: //github.com/gitlabhq/gitlab-recipes/tree/master/install/centos,笔者依照这篇文章的说明,成功的在centos系统上安装了gitlab,分享一下自己的

docker下搭建fastfds集群版

搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成了镜像. 如对fastfds搭建流程不熟悉者,需先参阅之前的文章.点击进入文章 首先借鉴一个公众号的两张图来说明一下 fastfds 上传下载的流程,公众号为 "Java架构师之路" 我搭建的思路是,两个tracker.四个storage,然后通过nginx进行反向代理访问图片. 下面演示

在Windows下搭建Gitlab服务器

一.GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库.团队成员可以利用内置的简单聊天程序(Wall)进行交流.它还提供一个代码片段收集功能可以轻松实现代码复用. 二.GitLab和Github的联系和区别 Github - 一个网站,提供