zoukankan      html  css  js  c++  java
  • Docker安装Gitlab

    一、Gitlab简介

    • GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab 分为 社区版(Community Edition,缩写为 CE)和 企业版(Enterprise Edition,缩写为 EE)。社区版是免费的,而企业版包含一些收费服务,一般来说个人开发者用社区版就足够了。

    二、安装步骤

    2.1、centos7安装docker

    #下载阿里yum源2 
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    #生成仓库缓存 
    yum makecache
    #安装
    yum install docker -y
    #启动docker
    systemctl start docker  #启动docker
    systemctl enable docker #开机启动docker
    systemctl status docker #查看docker状态
    #查看docker 版本
    docker version
    #解决了国内用户访问 Docker Hub 缓慢的问题
    #使用前请先确保您的 Docker 版本在 1.8 或更高版本,否则无法使用加速。
    cat /etc/docker/daemon.json #修改这个文件为如下内容
    
    {
        "registry-mirrors": [
            "http://95822026.m.daocloud.io"
        ],
        "insecure-registries": []
    }
    ---------------------------------------------------------
    或者用这条命令
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io
    #事后重启docker
    systemctl restart docker

    2.2、下载镜像

    首先需要先下载 GitLab CE 的镜像,使用下面的命令进行下载,因为文件较大,所以可能需要一点时间,耐心等待即可。

    # 不加 tag 则默认为最新版本 latest

    docker pull gitlab/gitlab-ce

    2.3、创建目录

    通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。

     mkdir -p /opt/gitlab/config
     mkdir -p /opt/gitlab/logs
     mkdir -p /opt/gitlab/data

    2.4、启动运行

    docker run --detach 
    --hostname gitlab-168-182-146 
    --publish 8443:443 --publish 8880:80 --publish 8822:22 
    --name gitlab 
    --restart always 
    --volume /opt/gitlab/config:/etc/gitlab 
    --volume /opt/gitlab/logs:/var/log/gitlab 
    --volume /opt/gitlab/data:/var/opt/gitlab 
    --privileged=true 
    gitlab/gitlab-ce:latest

    参数说明:

    -d 或 --detach:这个选项告诉 Docker 在启动后将程序与控制台分离,使其进入“后台”运行。 --hostname gitlab-168-182-146: 设置主机名或域名 --publish 8443:443:将http:443映射到外部端口8443 --publish 8880:80:将web:80映射到外部端口8880 --publish 8822:22:将ssh:22映射到外部端口8822 --name gitlab: 运行容器名 --restart always: 自动重启 --volume /opt/gitlab/config:/etc/gitlab: 挂载目录 --volume /opt/gitlab/logs:/var/log/gitlab: 挂载目录 --volume /opt/gitlab/data:/var/opt/gitlab: 挂载目录 --privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限

    运行成功之后,可以使用下面的命令查看容器运行状态:

    docker ps

     2.5、访问

    gitlab启动成功后,浏览器访问http://ip:8880, 即可访问。为了使用域名访问,需要配置nginx(/opt/gitlab/data/nginx/conf/nginx.conf):

    upstream  gitlab{
        server 127.0.0.1:8880;
    }
      
    server {
        listen 80;
        server_name gitlab-168-182-146;
        access_log   /var/log/nginx/gitlab.168-182-146-access.log;
        error_log  /var/log/nginx/gitlab.168-182-146-error.log;
        location / {
          proxy_pass_header  Server;
          proxy_set_header Host $http_host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Scheme $scheme;
          proxy_pass http://gitlab;
          
      }
    }

    首次访问需要为root用户设置密码,设置完成后需要登录,默认用户名为:root, 密码为刚刚设置的密码,我这里密码是:P@ssw0rd

    2.6、配置邮件服务器

    想要让 GitLab 给你发送邮件,还要配置一下邮件服务器,这里以QQ邮箱的 IMAP/SMTP服务 来配置。

    打开邮箱->设置->账户,然后开启 IMAP/SMTP服务,然后根据文档获取 授权码 ,这步比较重要。

    然后跳转至挂载目录/opt/gitlab/config/编辑gitlab.rb文件,找到 Email Settings的注释位置,然后修改以下内容:

    ### Email Settings
    开启 SMTP 功能
    gitlab_rails['smtp_address'] = "smtp.qq.com"
    gitlab_rails['smtp_port'] = 465# 端口不可以选择587,测试过会发送邮件失败
    gitlab_rails['smtp_user_name'] = "test@qq.com"# 你的邮箱账号
    gitlab_rails['smtp_password'] = "1324dasd"# 授权码,不是密码
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true
    gitlab_rails['gitlab_email_from'] = 'test@qq.com'# 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错
    gitlab_rails['smtp_domain'] = "qq.com"# 修改并不影响

    配置完成后保存,然后输入下面的命令使配置生效。

    sudo docker  exec gitlab gitlab-ctl reconfigure

    使配置生效之后我们可以使用 gitlab 自带的工具进行一下测试。依次执行下面的命令:

    # 开启 gitlab 的 bash 工具
    docker exec -it gitlab bash
    # 开启 gitlab-rails 工具
    gitlab-rails console production
    # 发送邮件进行测试
    Notify.test_email('test_001@123.com','Message Subject','Message Body').deliver_now

    测试完成之后退出gitlab的bash工具,重启 gitlab 即可。

    docker restart gitlab

    2.7、配置 Git 仓库访问路径

    在之前第一次运行 gitlab 容器的时候,有一个参数 hostname 为 gitlab-168-182-146 , 如果配置了域名可以忽略这一步,如果你没有配置相应域名的话,你的仓库的地址将会变为下面这样:

    ssh: git@gitlab-168-182-146:test/test.git
    http:gitlab-168-182-146/test/test.git

    如果域名不存在的话,这个地址是无法进行 clone 的。

    为了解决这个问题,我们可以设置成 IP 或 你配置了的域名来访问。

    打开文件/opt/gitlab/config/gitlab.rb文件并找到

    # external_url 'GENERATED_EXTERNAL_URL'

    这行,去掉注释,并按照下面的格式修改。

    # ip 形式
    external_url 'http://192.168.182.146'
    
    # 域名形式
    external_url 'http://JemGeek.com'
    
    # 子域名
    external_url 'http://gitlab.JemGeek.com'
    
    # 其他形式
    external_url 'http://JemGeek.com/gitlab'

    以上形式都是可以的。修改完成后,输入命令:

    docker exec gitlab gitlab-ctl reconfigure

    使配置生效,然后重启 gitlab 即可。

    2.8、升级

    参照官方的说明, 将原来的容器停止, 然后删除:

    docker stop gitlab
    docker rm gitlab

    然后重新拉一个新版本的镜像下来,

    docker pull gitlab/gitlab-ce

    使用原来的运行命令运行:

    docker run --detach 
    --hostname gitlab-168-182-146 
    --publish 8443:443 --publish 8880:80 --publish 8822:22 
    --name gitlab 
    --restart always 
    --volume /opt/gitlab/config:/etc/gitlab 
    --volume /opt/gitlab/logs:/var/log/gitlab 
    --volume /opt/gitlab/data:/var/opt/gitlab 
    --privileged=true 
    gitlab/gitlab-ce:latest

    GitLab 在初次运行的时候会自动升级, 为了预防万一, 还是建议先备份一下/opt/gitlab/这个目录

    大版本升级(例如从 8.7.x 升级到 8.8.x)用上面的操作有可能会出现错误, 如果出现错误可以尝试登录到容器内部, 依次执行下面的命令:

    gitlab-ctl reconfigure
    gitlab-ctl restart
  • 相关阅读:
    03_输出程序状态信息
    06_键盘事件
    Silverlight中引用图片的方式
    04_响应单点触控
    02_ListActive中响应事件 并LogCat输出
    批量插入更新的 sql语句
    07_重力倾斜度响应
    读取XML
    人生启示录效应篇之牢骚效应:凡是公司中有对工作发牢骚的人,那家公司或老板一定比没有这种人或有这种人而把牢骚埋在肚子里的公司要成功得多
    鼠标事件之JS
  • 原文地址:https://www.cnblogs.com/liugp/p/13772104.html
Copyright © 2011-2022 走看看