• Ubuntu Docker搭建GitLab以及常规配置使用


    安装启动实例

    1.首先创建一个目录用于存放配置

    sudo docker pull docker.io/gitlab/gitlab-ce
    sudo mkdir -p /root/docker/gitlab/config
    sudo mkdir -p /root/docker/gitlab/logs
    sudo mkdir -p /root/docker/gitlab/data

    2.运行实例(关于最新版本的https 没有搞定,晚上说的都是旧版本, 尝试了一下 旧版本也是无果的,还有官方的新版有很多监控)

    docker run -d --hostname 192.168.100.5  -p 2222:22  -p 8080:80  -p 8443:443   -v /root/docker/gitlab/config:/etc/gitlab   -v /root/docker/gitlab/logs:/var/log/gitlab   -v /root/docker/gitlab/data:/var/opt/gitlab   --restart always  --name gitlab  gitlab/gitlab-ce:latest
    # --hostname 指定容器域名,未知功能:创建镜像仓库的时候使用到
    # 将容器内443端口映射到主机8443,提供https服务
    # 将容器内80端口映射到主机8080,提供http服务
    # 将容器内22端口映射到主机2222,提供ssh服务

    查看Gitlab容器运行情况

    docker inspect gitlab --format "{{.State.Status}}"

    4..初次使用gitlab时需要创建默认管理员密码,至少8位,这里输入“12345678”。 

    我们在登录那里使用root作为用户名,然后用刚刚设置的密码,就可以以管理员身份登录Gitlab。 

    创建并拉取项目

    我们来创建一个项目(public 不需要login的),然后简单测试一下,如果用户是windows建议可以考虑安装GitTortoiseGit图形界面操作。

    上面我们这个项目是public, 现在修改为internal(需要用户密码)

    然后修改tortoisegit设置

    最后如图:

    目前还有个遗留问题,就是external_url 的配置(现在在gitlab上的http克隆地址是http://192.168.100.5/root/webapi.git,是没有8080端口,是我自己手动添加的),网上找了很多方法都没有搞定。

    后来我重新准备一个新的ubuntu虚拟机,就用默认的端口:

    docker run -d --hostname 192.168.100.16  -p 2222:22  -p 80:80  -p 443:443   -v /root/docker/gitlab/config:/etc/gitlab   -v /root/docker/gitlab/logs:/var/log/gitlab   -v /root/docker/gitlab/data:/var/opt/gitlab   --restart always  --name gitlab  gitlab/gitlab-ce:latest

    结果一切都好了


    Push项目

    在使用git推送代码到远程的gitlab库时抛出,You are not allowed to push code to this project“的错误信息。详细信息如下:

    点击gitlab的“Settings”> “Repository”,在打开的界面选择 “Protected Branches”项的“Expand”按钮。如下图

    在打开的界面可以看见master分支是在受保护的,我们只需要点击“unprotect”按钮,将master分支从受保护中移除。如下图:

    4.如果还没有解决的话,还请检查一下用户权限:

    SSH配置:

    由于端口我这里改为2222,所以需要修改gitlab.rb配置 然后重启docker(docker container restart gitlab)

    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    #ssh访问地址需要添加端口号 变为 git clone ssh://git@192.168.100.16:2222/root/webapi.git

    现在我们来创建ssh  key

    git config --global user.name "gavin"
    git config --global user.email "gavinzhangsan@outlook.com"
    ssh-keygen -t rsa -C "gavinzhangsan@outlook.com" #后面直接回车 回车就可以了

    在git lab删添加key

    https配置:

    sudo mkdir -p /root/docker/gitlab/config/ssl
    openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=FR/ST=Charente/L=Mornac/O=Office/CN=gitlab.domain.com" -keyout /root/docker/gitlab/config/ssl/gitlab.domain.com.key -out /root/docker/gitlab/config/ssl/gitlab.domain.com.crt
    #生成证书到/root/docker/gitlab/config/ssl目录

    修改gitlab.rb配置:

    external_url 'https://gitlab.domain.com'
    nginx['redirect_http_to_https'] = true
    nginx['redirect_http_to_https_port'] = 80
    nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.domain.com.crt"
    nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.domain.com.key"
    nginx['listen_port'] = 443
    nginx['proxy_set_headers'] = {
     "Host" => "$http_host_with_default",
     "X-Real-IP" => "$remote_addr",
     "X-Forwarded-For" => "$proxy_add_x_forwarded_for",
     "X-Forwarded-Proto" => "https",
     "X-Forwarded-Ssl" => "on",
     "Upgrade" => "$http_upgrade",
     "Connection" => "$connection_upgrade"
    }

    在host文件中增加配置:

    192.168.100.16 gitlab.domain.com

    现在应用新的配置, 然后重启docker

    -----以下是网上找的一点资料 看上去比较靠谱 但实际没有解决问题-----

    首先,备份默认gitlab.rb和gitlab.yml

    cd /root/docker/gitlab/config
    cp gitlab.rb gitlab.rb.default

    按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址(实际上我搞了很久也没有搞定external_url , 也就是http访问, 最后实在不行就用ssh协议吧),修改/root/docker/gitlab/config/gitlab.rb

    # 配置http协议所使用的访问地址
    external_url 'http://192.168.100.5'
    #nginx['listen_addresses'] = ['*', '[::]']
    #nginx['listen_port'] = 8080
    # 配置ssh协议所使用的访问地址和端口
    #gitlab_rails['gitlab_ssh_host'] = '192.168.100.5'
    #gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 此端口是run时22端口映射的2222端口

    然后重启容器:

    docker exec -t gitlab gitlab-ctl reconfigure
    docker exec -t gitlab gitlab-ctl restart

    参考:

    docker安装配置gitlab详细过程

    通过docker安装Gitlab

    Use Docker-Compose to Run Gitlab via Https With Self-signed CA

    正确使用 Docker 搭建 GitLab 只要半分钟

    Centos7:Docker安装Gitlab

    使用docker-compose搭建gitlab

  • 相关阅读:
    Java之CyclicBarrier使用
    HashMap,LinkedHashMap,TreeMap的区别
    阿里巴巴常考面试题及汇总答案
    HashTable, HashMap,TreeMap区别
    Java集合类详解
    java代码的几个utils,基本可以直接用
    adb控制手机屏幕滑动(批处理)
    在设备上启用 adb 调试,有一个小秘密
    python clickZan
    python控制鼠标键盘
  • 原文地址:https://www.cnblogs.com/majiang/p/11452363.html
Copyright © 2020-2023  润新知