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

https://zhuanlan.zhihu.com/p/49499229

很多程序员在内网搭建 gitlab 都搭建的坑坑洼洼,不支持 https,或者装个 gitlab 就把服务器弄得乱七八糟的,根本不知道该怎么维护和迁移。还有程序员再用最原始的,远程机器上:

git --bare init

然后其他人按照 ssh 的协议来克隆的刀耕火种的方法,还有项目用 php 写 fastcgi 来提供 git 服务。真的有那么麻烦么?正确使用 Docker 搭建 Gitlab 明明就是半分钟的事情。

先建个目录:

sudo mkdir -p /home/data/gitlab/config

新建并编辑文件:/home/data/gitlab/docker-compose.yml

gitlab:
    image: gitlab/gitlab-ce:11.3.6-ce.0
    restart: always
    hostname: '192.168.1.11'
    environment:
        GITLAB_OMNIBUS_CONFIG: |
            external_url 'https://192.168.1.11:8443'
            nginx['redirect_http_to_https'] = true
            letsencrypt['enable'] = false
            nginx['ssl_certificate'] = "/etc/gitlab/nginx.pem"
            nginx['ssl_certificate_key'] = "/etc/gitlab/nginx.key"
            # Add any other gitlab.rb configuration here, each on its own line
    ports:
        - 8443:8443
    volumes:
        - ./data:/var/opt/gitlab
        - ./logs:/var/log/gitlab
        - ./config:/etc/gitlab

然后在该文件目录下,新建自签名的证书:

sudo openssl req -new -x509 -days 36500 -nodes -out config/nginx.pem \
         -keyout config/nginx.key -subj "/C=US/CN=gitlab/O=gitlab.com"

最后再该目录下启动 docker:

sudo docker-compose up

等两分钟,初始化完了,打开浏览器:https://192.168.1.11:8443

忽略自签证书警告,然后 F5 刷新:

搞定了,进去初始化 root 管理员的密码,然后用 root/刚才密码登陆试试。一切正常后就用 "-d" 参数重新运行 docker-compose up 命令,让它常驻后台,自动启动,开始正常使用。

上面初始化管理员密码后,配置好网站,记得还是正常注册个非管理员身份去使用,网站设置好就少用管理员登陆。

Q:用 https 的方式 git clone 仓库提示证书问题?

git config --global http.sslVerify "false"

运行上面命令即可屏蔽自签证书的验证。

Q2:为什么不用 Let's Encrypt 免费证书 ?

Let's Encrypt 的免费证书需要三个月更新一次,它是三个月三个月给你发的,也就是说当你深深依赖上它时,它有权利突然向你提出付费要求,所以我嫌他烦,何况后台还要跑一个它的服务来自动更新证书,简单事情复杂化了。

Q3:怎么改端口?

想改端口,要保证 compose 文件中的 external_url 部分和下面的端口内外映射保持一致,不能内外端口不一致,也要避免下面的端口和上面的 external_url 不匹配。

Q4:怎么备份?

备份或者迁移可以把 config / data 两个目录拷走就行。经常热备份的话,最好还是登陆到容器内用 gitlab-raker 进行标准备份。

然后你就能体会到比 Github 快 10倍的克隆速度,大型项目瞬间 clone/fetch,有没有?

--

补充:评论区介绍轻量级的 GitBucket,我们也可以用 docker 安装一下:

gitbucket:
    image: skywind3000/gitbucket:https
    restart: always
    ports:
        - 8080:8080
        - 8443:8443
    volumes:
        - ./data:/var/gitbucket

上面内容保存成 docker-compose.yml ,再同一级目录下运行:

sudo docker-compose up -d

然后本地打开:https://your-ip-address:8443/ 使用 root/root 账号登陆即可,原镜像不支持 https,我做了一个支持 https 的镜像,原来的裸 http 端口 8080 继续保留。

[转帖]知乎专栏:正确使用 Docker 搭建 GitLab 只要半分钟的更多相关文章

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

    安装启动实例 1.首先创建一个目录用于存放配置 sudo docker pull docker.io/gitlab/gitlab-ce sudo mkdir -p /root/docker/gitla ...

  2. 【Devops】【docker】【CI/CD】1.docker搭建Gitlab环境

    CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-c ...

  3. Docker 搭建 GitLab

    Docker 搭建 GitLab 步骤 # 创建目录 mkdir -p /usr/local/gitlab && cd /usr/local/gitlab # 创建映射目录 mkdir ...

  4. Docker学习系列(三)Docker搭建gitlab的两种方式

    一.直接下载docker-ce 1.拉取gitlab/gitlab-ce Randy:~ Randy$ docker pull gitlab/gitlab-ce Using default tag: ...

  5. docker搭建gitlab服务器(Centos7)

    系统环境:CentOS Linux release 7.6.1810 (Core) git版本:gitlab/gitlab-ce 一.安装和启动docker 见HTTPRUNNERMANAGER安装部 ...

  6. Centos7使用docker搭建gitlab服务器

    了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...

  7. 使用docker搭建gitlab版本控制系统

    1. GitLab 简介 GitLab 是一款基于 git 的开源代码仓库系统   GitLab 与著名的 GitHub 最大的区别就是:  允许我们搭建自己的 git 代码私有仓库,非常方便   2 ...

  8. 本地docker搭建gitlab, 并配置ldap认证

    基于Docker在Mac OS X系统中的部署和设置GitLab的具体过程如下:   1. 安装Docker for Mac (参见https://docs.docker.com/docker-for ...

  9. docker搭建gitlab、Redmine

    本地使用windows,setting里面切换至linux 从Docker图标的右键菜单中选中 “Switch to Linux containers ...” Docker Engine运行在Lin ...

随机推荐

  1. Linux系统学习之文件管理

    Linux目录分布通常是树形,所以它的结构又称为目录树. 一.文件和目录管理 [root@Cfhost-170820-UCNK /]# cd / [root@Cfhost-170820-UCNK /] ...

  2. (转)60s快速分析Linux性能

    之前在地铁上看到过一篇快速分析Linux系统性能的文章,觉得以后有用,今天就找了一下,转载过来. 原文出处:http://techblog.netflix.com/2015/11/linux-perf ...

  3. ingress rewrite

    kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: http://www.oneway.cn ...

  4. Spark运行时错误与解决

    Spark  java.io.IOException: Filesystem closed partition数量太小,读取数据后进行repartition重新分片再处理. Spark Streami ...

  5. Skyline 二次实现单体化模型选择查询示例代码

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  6. Linux下修改/设置环境变量JAVA_HOME

    export设置只对当前的bash登录session有效.这是存在内存里面的.你可以写入文件一般的文件.之后source它.或者放到/etc/profile 等等的位置里,不同的地方效果不同. 1. ...

  7. Luogu P4211 [LNOI2014]LCA

    我去这道题的Luogu评级是假的吧,这都算黑题. 我们首先考虑把操作离线不强制在线的题目离线一下一般都要方便些 考虑差分,我们用\(f(x)\)表示\([1,x]\)之间的点与\(z\)的答案,那么显 ...

  8. [Spark][Python]对HDFS 上的文件,采用绝对路径,来读取获得 RDD

    对HDFS 上的文件,采用绝对路径,来读取获得 RDD: In [102]: mydata=sc.textFile("file:/home/training/test.txt")1 ...

  9. ubuntu12.04安装mininet

    网上安装mininet教程有很多,都是通过git命令安装,但有一个坑,安装到./install.sh时会报错,记录下来 1.通过git 下载mininet git clone git://github ...

  10. js类型----你所不知道的JavaScript系列(5)

    ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型等. 1.内置类型 JavaScript 有七种内置类型: • 空值(null) • 未定义( ...