基于Docker在Mac OS X系统中的部署和设置GitLab的具体过程如下:
 
1. 安装Docker for Mac (参见https://docs.docker.com/docker-for-mac/install/
 
2. 下载GitLab镜像
     docker pull gitlab/gitlab-ce
 
 
3. 运行GitLab实例
  sudo docker run -d \
    --hostname xxxx.xxxx.xx \
    --name gitlab \
    --restart always \
    --publish 30001:22 --publish 30000:80 --publish 30002:443 \
    --volume $HOME/gitlab/data:/var/opt/gitlab \
    --volume $HOME/gitlab/logs:/var/log/gitlab \
    --volume $HOME/gitlab/config:/etc/gitlab \
    gitlab/gitlab-ce
 
其中volume选项将gitlab的目录挂载为用户当地目录,以免容器在停止或被删除的时候丢失数据。publish选项将宿主机器的30000、30001和30002映射为容器的80(http)、22(ssh)和443(https)端口。
 
4.配置GitLab实例
 
GitLab的配置存储在/etc/gitlab/gitlab.rb文件中。
 
利用命令“sudo docker exec -it gitlab /bin/bash”可以在gitlab容器中进入bash,也可以用命令“sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb”直接执行vi编辑GitLab配置文件。由于在运行GitLab实例时,已经用volume选项将gitlab的目录挂载为用户当地目录,因此gitlab.rb文件实际位于$HOME/gitlab/config目录下。
 
修改gitlab.rb文件后,在容器中执行命令gitlab-ctl reconfigure重新配置gitlab。
 
4.1 配置GitLab服务器的访问地址
 
4.1.1 配置http协议所使用的访问地址
将external_url修改为GitLab服务器的访问地址:
    external_url 'http://xxxx.xxxx.xxx:30000'
 
由于定义的url中有端口号,需要将nginx监听的端口号改回80,否则nginx将监听容器的30000端口,造成GitLab无法使用:
    nginx['listen_port'] = 80
 
4.1.2 配置ssh协议所使用的访问地址和端口
    gitlab_rails['gitlab_ssh_host'] = ‘data.comdyn.cn'
    gitlab_rails['gitlab_shell_ssh_port'] =30001
 
4.2 配置邮箱
 
为了采用SMTP服务器而不是缺省的Sendmail发送邮件,需要修改gitlab.rb中的内容,
 
下面以网易163邮箱为例配置邮箱:
 
    gitlab_rails['gitlab_email_from'] = "xxxx@163.com
    gitlab_rails['gitlab_email_reply_to'] = ‘xxxx@163.com'
    
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.163.com"
    gitlab_rails['smtp_port'] = 465
    gitlab_rails['smtp_user_name'] = "xxxx@163.com"
    gitlab_rails['smtp_password'] = "xxxxpassword"
    gitlab_rails['smtp_domain'] = "163.com"
    gitlab_rails['smtp_authentication'] = "login"       
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] =true
 
    gitlab_rails['smtp_openssl_verify_mode'] = "peer"
 
最后,用命令docker restart gitlab重启GitLab,或者在容器中执行命令gitlab-ctl reconfigure重新配置gitlab。
 
5. 导入现有的git仓库
 
将现有的git仓库(如test)导入gitlab需要三步:
 
5.1 将已有的所有git仓库的裸库(如test.git)都拷贝到gitlab目录中。
 
前面在运行gitlab实例时,利用volume选项已经将gitlab的数据目录指定为$HOME/gitlab/data/,因此git仓库将存放在目录$HOME/gitlab/data/git-data/repositories/下。
 
gitlab允许创建组,将多个仓库纳入到一个组中,每个组在repositories下面对应于一个与组名称相同的子目录。将所有裸库拷贝到与其组所对应的子目录中。例如,如果要要将test仓库导入到sub组中的话,则应执行:
    sudo cp -r test.gig $HOME/gitlab/data/git-data/repositories/sub/
 
5.2 利用sudo chown命令,将test.git的拥有者的用户名和组名改为和repositories目录的拥有者相同,以保证gitlab可以访问该仓库。
 
5.3 导入仓库
 
在gitlab容器中执行gitlab-rake命令:
    sudo docker exec -it gitlab gitlab-rake gitlab:import:repos['$HOME/gitlab/data/git-data/repositories’]
导入repositories下的所有仓库,并自动创建组。如果某仓库在gitlab中已存在,则会跳过该仓库。

Gitlab 11.0.3汉化完成后,需要集成域控,现将域控的配置过程描述如下:

gitlab目录:/etc/gitlab

gitlab配置文件:/etc/gitlab/gitlab.rb

编辑gitlab.rb文件:

在gitlab.rb文件中修改下面配置,其中:

1.host,是搭建的ldap的ip,根据实际情况修改;

2.uid,可以配置cn,也可以配置uid,都能识别(具体为什么没深入研究);

3.bind_dn,ldap的管理员账号,根据实际情况修改;

4.password,ldap的管理员,根据实际情况修改;

5.active_directory,似乎是针对连接是否是ad域控的标示,因为这部分是ldap的配置,故为false;

6.allow_username_or_email_login,用户登录是否用户名和邮箱都可以,方便用户故配置true;

7.base,用户列表所在的目录,因为新增的用户都在ldap的People下,故这么配置,根据实际情况修改;

我的配置如下:

  gitlab_rails['ldap_enabled'] = true

###! **remember to close this block with 'EOS' below** 
 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' 
   main: # 'main' is the GitLab 'provider ID' of this LDAP server 
     label: 'LDAP' 
     host: '**.**.**.**' 
     port: 389 
     uid: 'sAMAccountName' 
     bind_dn: 'cn=***,cn=Users,dc=***,dc=****,dc=COM' 
     password: '*****' 
     encryption: 'plain' # "start_tls" or "simple_tls" or "plain" 
     verify_certificates: true 
     active_directory: true 
     allow_username_or_email_login: true 
     lowercase_usernames: false 
     block_auto_created_users: false 
     base: 'OU=Users,OU=*****,DC=***,DC=*****,DC=COM' 
     user_filter: '' 
     ## EE only 
#     group_base: '' 
#     admin_group: '' 
#     sync_ssh_keys: false 

#   secondary: # 'secondary' is the GitLab 'provider ID' of second LDAP server 
#     label: 'LDAP' 
#     host: '_your_ldap_server' 
#     port: 389 
#     uid: 'sAMAccountName' 
#     bind_dn: '_the_full_dn_of_the_user_you_will_bind_with' 
#     password: '_the_password_of_the_bind_user' 
#     encryption: 'plain' # "start_tls" or "simple_tls" or "plain" 
#     verify_certificates: true 
#     active_directory: true 
#     allow_username_or_email_login: false 
#     lowercase_usernames: false 
#     block_auto_created_users: false 
#     base: '' 
#     user_filter: '' 
#     ## EE only 
#     group_base: '' 
#     admin_group: '' 
#     sync_ssh_keys: false 
 EOS

重要配置参数解释(仔细阅读上一篇svn集成LDAP认证的文章这些参数会更好理解):
- host:LDAP服务器地址
- port:LDAP服务端口
- uid:以哪个属性作为验证属性,可以为uid、cn等,我们使用uid
- method:如果开启了tls或ssl则填写对应的tls或ssl,都没有就填写plain
- bind_dn:search搜索账号信息的用户完整bind(需要一个有read权限的账号验证通过后搜索用户输入的用户名是否存在)
- password:bind_dn用户的密码,bind_dn和password两个参数登录LDAP服务器搜索用户
- active_directory:LDAP服务是否是windows的AD,我们是用的OpenLDAP,这里写false
- allow_username_or_email_login:是否允许用户名或者邮箱认证,如果是则用户输入用户名或邮箱都可
- base:从哪个位置搜索用户,例如允许登录GitLab的用户都在ou gitlab里,name这里可以写ou=gitlab,dc=domain,dc=com
- filter:添加过滤属性,例如只过滤employeeType为developer的用户进行认证(employeeType=developer)

配置完成后进行配置更新:

  gitlab-ctl reconfigure

检查是否配置成功:

  gitlab-rake gitlab:ldap:check(列出前100个用户)

重启gitlab服务:

  gitlab-ctl restart

注意:  确认该用户不处于特殊状态

1.不处于“禁用账户”的状态;

2.不处于“需要首次登录修改密码”的状态;

(处于上面任意一种状态的账户在登录gitlab时都会报“Cloud not authenticate you from Ldapmain because "Invalid creadentials".”)

下图是发出的search 用户状态的请求:

判断用户状态码:

https://www.cnblogs.com/tldxh/p/7093360.html

本地docker搭建gitlab, 并配置ldap认证的更多相关文章

  1. gitlab、openvpn配置ldap认证

    gitlab配置ldap认证: vim /etc/gitlab/gitlab.rb 添加以下内容: gitlab_rails['ldap_enabled'] = true gitlab_rails[' ...

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

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

  3. [转帖]知乎专栏:正确使用 Docker 搭建 GitLab 只要半分钟

    正确使用 Docker 搭建 GitLab 只要半分钟 https://zhuanlan.zhihu.com/p/49499229 很多程序员在内网搭建 gitlab 都搭建的坑坑洼洼,不支持 htt ...

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

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

  5. Docker 搭建 GitLab

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

  6. 使用docker搭建gitlab服务器

    简单记录Docker的使用和GitLab的搭建 Docker基础篇 没有sudo权限 安装docker 基础命令 docker安装mysql和配置 Dockerfile常用命令 制作镜像 发布镜像 容 ...

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

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

  8. 搭建harbor仓库、LDAP认证

    ldap: 192.168.199.177 c5game.com 宿主机:192.168.199.224 测试客户机:192.168.199.223 安装docker.docker-compose 访 ...

  9. docker搭建gitlab、Redmine

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

随机推荐

  1. NOIP2018 货币系统

    题面 思路 先分析一下,a集合的子集肯定不存在可以用它来表示的数,a集合是不能够表示的. 所以问题简化了成为选出a的一个子集(个数最少),能够表达a集合所有能表达的数. 接下来继续分析 如:1 2 4 ...

  2. linux学习笔记-11.正则表达式

    1.cut截取以:分割保留第七段 grep hadoop /etc/passwd | cut -d: -f7 2.排序 du | sort -n 3.查询不包含hadoop的 grep -v hado ...

  3. 立FLAG-书单

    立FLAG-书单 ### 懒散的文字懒散的我 总是自以为是个爱读书的人,但是总是懒懒散散,书读一点就放下了,导致了两个月前就已经说是要计划看望的<林徽因传>到现在还剩着一小半没看完.想着, ...

  4. 无线网卡服务端工具airserv-ng

    无线网卡服务端工具airserv-ng   由于WiFi信号强度的限制,渗透测试人员只能监听主机周边范围的无线信号.为了解决这个问题,aircrack-ng套件提供了一个无线网卡服务端工具airser ...

  5. 括弧匹配检验(check.cpp)

    [问题描述]        假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错 ...

  6. Beta冲刺准备

    过去存在的问题: 界面不够美观 推荐不够人性化 代码不够符合开闭原则 我们已经做了哪些调整/改进: 本来想引入springAndroid,但看了下google的官方文档,不建议引入第三方框架:代码重构 ...

  7. 解决浏览器抛出乱码,(HTML、PHP等的乱码问题)

    在Windows上编写html或php代码的时候,本地编辑器设置的文件编码格式是utf-8保存,但是浏览器打开页面的时候经常出现乱码,而且浏览器自动检测到的页面编码为GBK格式,这时候我就开始纳闷了? ...

  8. Moment.js 一款JS时间封装库

    链接地址:http://momentjs.cn/docs/#/displaying/difference/

  9. [Java]类的生命周期(上)类的加载和连接[转]

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 类加载器,顾名思义,类加载器(class loader)用来加载 Java 类到 Java ...

  10. BZOJ 3101: N皇后 构造

    3101: N皇后 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3101 Description n*n的棋盘,在上面摆下n个皇后,使其 ...