Docker部署GitLab并实现基本配置

本地GitLab的安装需要部署各种依赖和其他服务,费时且麻烦,而直接使用Docker进行容器化部署则省时简单,只要运行一行命令即可使用。本文记录了在实验室内网环境下利用Docker搭建源码托管工具GitLab,并列出一些必要的个性化配置项。

准备工作

操作系统

由于Ubuntu系统在Docker环境下兼容性更高,选择了 Ubuntu 18.04 LTS 作为操作系统环境。

安装Docker

Docker环境的安装十分简单,在这里不详述,根据Docker —— 从入门到实践选择对应操作系统的安装教程即可。

安装GitLab-ce

GitLab的安装可以直接run,或者通过docker-compose文件指定安装流程,这里使用前者进行快速简单安装,后者后续更新。

  • 拉取GitLab-ce镜像,查看镜像信息

    $ docker pull gitlab/gitlab-ce
    $ docker image ls
  • 创建并启动一个GitLab容器,:后的内容不要修改

    $ GITLAB_HOME = /home/docker/gitlab     # 建立gitlab本地目录
    $ docker run -d \
    --hostname gitlab.example.com\          # 指定容器域名,创建镜像仓库用
    -p 8443:443 \                           # 容器443端口映射到主机8443端口(https)
    -p 8080:80 \                            # 容器80端口映射到主机8080端口(http)
    -p 2222:22 \                            # 容器22端口映射到主机2222端口(ssh)
    --name gitlab \                         # 容器名称
    --restart always \                      # 容器退出后自动重启
    -v $GITLAB_HOME/config:/etc/gitlab \    # 挂载本地目录到容器配置目录
    -v $GITLAB_HOME/logs:/var/log/gitlab \  # 挂载本地目录到容器日志目录
    -v $GITLAB_HOME/data:/var/opt/gitlab \  # 挂载本地目录到容器数据目录
    gitlab/gitlab-ce:latest                 # 使用的镜像:版本
  • 查看容器运行情况,出现gitlab运行信息表明启动成功

    $ docker container ls
  • 浏览器进入http://192.168.8.21:8080,使用root账户登录并设置密码即可进入管理员界面

配置GitLab

可参考官方配置说明文档,本地配置文件在$GITLAB_HOME/config/gitlab.rb

备份默认配置文件

$ cd /home/docker/gitlab/config
$ cp gitlab.rb gitlab.rb.default

修改与重载配置

  • 修改配置文件

    $ sudo vi /home/docker/gitlab/config
  • 重载配置

    在gitlab容器内重载

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

    或直接重启容器

    $ docker restart gitlab

常用配置选项

  • 配置web请求地址

    external_url 'http://192.168.8.21'
  • 设置时区

    gitlab_rails['time_zone'] = 'Asia/Shanghai'
  • 允许自定义头像,去掉注释#

    gitlab_rails['gravatar_plain_url'] = 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'
  • 由于设置了端口映射,设置如下选项使得网页端显示正常可用的ssh地址,如“ssh://git@192.168.8.21:2222/xxx/xxx.git”

    gitlab_rails['gitlab_shell_ssh_port'] = 2222
  • 在实验室内网环境下,关闭GitLab的CI/CD功能,详细见官方说明

    gitlab_rails['gitlab_default_projects_features_builds'] = false
  • 设置GitLab备份路径

    gitlab_rails['manage_backup_path'] = true
    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
  • 配置邮箱服务,可以参考连接
  • 添加SSL证书支持HTTPS,可以参考连接,由于使用自签名证书Chrome会拦截,所以没有弄

更新GitLab

  • 拉取最新的GitLab-ce镜像,然后停止并删除当前的GitLab容器

    $ docker stop gitlab
    $ docker rm gitlab
  • 重启创建并启动GitLab容器,使用同样的配置和volume参数即可,GitLab会自动读取这些配置

    $ docker run -d \
    --hostname gitlab.example.com\
    -p 8443:443 \ 
    -p 8080:80 \ 
    -p 2222:22 \
    --name gitlab \
    --restart always \
    -v $GITLAB_HOME/config:/etc/gitlab \
    -v $GITLAB_HOME/logs:/var/log/gitlab \
    -v $GITLAB_HOME/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

参考链接

  1. 通过docker安装Gitlab
  2. 使用Docker部署Gitlab
  3. docker部署gitLab
  4. How to enable or disable GitLab CI/CD
文章作者: yxnchen
文章链接: http://yxnchen.github.io/technique/Docker部署GitLab并实现基本配置/