简要记录如何基于docker创建Gitlab并集成ldap1且仅允许LDAP账号登录。

安装步骤

  1. 创建一个名为gitlab_test的文件夹,之后创建一个名为docker-compose.yml的文件,写入如下内容

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    version: "3"
    services:
      nacos:
        image: gitlab/gitlab-ce
        restart: always
        container_name: gitlab_custom
        ports:
          - 3555:80
        environment:
          - TZ=Asia/Shanghai
        volumes:
          - $PWD/etc:/etc/gitlab
          - $PWD/log:/var/log/gitlab
          - $PWD/opt:/var/opt/gitlab
    
  2. 运行docker-compose up -d命令,结合服务器性能以及网络环境等因素,gitlab需要2-3分钟才能完成启动成功,之后在当前目录下会自动创建相关的挂载目录同时写入相关映射文件

    gitlab自动挂载数据

    输入http://IP地址:3555可正常显示登录页面

    gitlab初始登录页面

  3. 在终端运行docker exec -it gitlab_custom cat /etc/gitlab/initial_root_password会显示root账号的初始密码,可利用改密码登录系统然后修改成更易于记忆的密码

    root账号初始密码

  4. 在终端运行vim etc/gitlab.rb添加如下图所示的LDAP相关配置

    修改配置文件集成ldap

  5. 在终端运行docker exec -it gitlab_custom /bin/bash gitlab-ctl reconfigure来更新gitlab配置

    gitlab更新配置

  6. 在终端运行docker exec -it gitlab_custom /bin/bash gitlab-rake gitlab:ldap:check,若出现类似如下结果则表示LDAP配置正常,可用单点账号登录

    ldap检查结果正常

    重新登录gitlab时可发现其已经支持LDAP,至此集成LDAP的工作初步完成。

    gitlab登录支持ldap

添加额外的管理员

gitlab默认只有root这1个admin账号,当禁止非LDAP方式登录时会将root账号的登录一并禁止掉,故需要预先将一些LDAP账户设置为管理员账号,操作过程如下:

  1. 在终端运行docker exec -it gitlab_custom /bin/bash gitlab-rails console进入ruby的交互式界面

    进入gitlab的ruby交互界面

  2. 在控制台中依次执行如下命令

    1
    2
    3
    4
    
    user = User.find_by(username: 'yunqiang.lu')
    user.admin = true
    user.save!
    exit
    

    通过gitlab的ruby控制台设置管理员

  3. 在终端重新执行docker exec -it gitlab_custom /bin/bash gitlab-ctl reconfigure

    gitlab刷新ldap管理员配置

  4. 采用前述过程中配置的账号登录gitlab,若在左上角的Menu菜单下出现Admin子菜单则表示管理员账号添加成功!

    gitlab添加管理员操作成功

只允许LDAP登录

主要参考How to disable standard authentication进行操作:

  1. 以管理员账号登录gitlab,依次点击Admin->Settings->General

  2. Sign-up restrictions下取消勾选sign-up enabled

    gitlab取消sign up

  3. Sign in restrictions下取消勾选Sign in restrictions

    gitlab取消web authentication

  4. 测试之后重新打开gitlab登录页面,可发现其支持LDAP登录,至此全部过程操作完成!

    gitlab只支持ldap登录


  1. 采用的是gitlab-ce而非gitlab-ee ↩︎