Docker 安装 Gitlab

#查找镜像

$ docker search gitlab

#拉取镜像

docker pull gitlab/gitlab-ce

#启动镜像

docker run -d \

    --name docker-gitlab \

    --restart always \

    -p 30000:22 -p 30001:80 -p 30002:443 \

    -v /Users/ct/etc/docker/gitlab/data:/var/opt/gitlab \

    -v /Users/ct/etc/docker/gitlab/logs:/var/log/gitlab \

    -v /Users/ct/etc/docker/gitlab/config:/etc/gitlab \

    gitlab/gitlab-ce

其中-v选项将gitlab的目录挂载为本地目录,以免容器在停止或被删除的时候丢失数据。-p选项将宿主机器的30000、30001和30002映射为容器的22(ssh)、80(http)和443(https)端口。

#配置GitLab

GitLab的配置存储在/etc/gitlab/gitlab.rb文件中(对应本机:/Users/ct/etc/docker/gitlab/config/gitlab.rb)

需要修改的配置项:

external_url 'http://share.gitlab.com:30001' (注意端口号)

由于定义的url中有端口号,需要将nginx监听的端口号改回80,否则nginx将监听容器的30000端口,造成GitLab无法使用

nginx['listen_port'] = 80

配置ssh协议所使用的端口

gitlab_rails['gitlab_shell_ssh_port'] = 30000

#配置邮箱(参考文档:https://docs.gitlab.com/omnibus/settings/smtp.html)

gitlab_rails['gitlab_email_from'] = '[email protected]' #邮箱地址

gitlab_rails['gitlab_email_reply_to'] = '[email protected]'

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.qq.com"

gitlab_rails['smtp_port'] = 465

gitlab_rails['smtp_user_name'] = "[email protected]"

gitlab_rails['smtp_password'] = "******" #注意此处是申请的授权码而不是邮箱的密码

gitlab_rails['smtp_domain'] = "smtp.qq.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'

#邮件测试

进入gitlab容器

$ docker exec -it docker-gitlab /bin/bash

root@a970b4b0020a:/# gitlab-rails console

Loading production environment (Rails 4.2.10)

irb(main):001:0> Notify.test_email('[email protected]', 'Message Subject', 'Message Body').deliver_now

Notify#test_email: processed outbound mail in 189.0ms

Sent mail to [email protected] (1190.5ms)

Date: Mon, 02 Apr 2018 07:57:25 +0000

From: GitLab <[email protected]>

Reply-To: GitLab <[email protected]>

To: [email protected]

Message-ID: <[email protected]>

Subject: Message Subject

Mime-Version: 1.0

Content-Type: text/html;

 charset=UTF-8

Content-Transfer-Encoding: 7bit

Auto-Submitted: auto-generated

X-Auto-Response-Suppress: All

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

<html><body><p>Message Body</p></body></html>

=> #<Mail::Message:69956544660360, Multipart: false, Headers: <Date: Mon, 02 Apr 2018 07:57:25 +0000>, <From: GitLab <[email protected]>>, <Reply-To: GitLab <[email protected]>>, <To: [email protected]>, <Message-ID: <[email protected]>>, <Subject: Message Subject>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>

irb(main):002:0>

最后,在浏览器中访问以下地址:

http://share.gitlab.com:30001(默认用户名和密码:root / 5iveL!fe)

注:首次登录会强制用户修改密码。密码修改成功后,输入新密码进行登录

另:

#如果报错: Net::ReadTimeout,可能是下面几个没有配置

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['smtp_ssl'] = true

#限制普通用户创建组

gitlab_rails['gitlab_default_can_create_group'] = false

#project和group权限等级

Private:只有授权的用户才可以看到

Internal:只要是登录上来的用户就可以看到

Public:任何组和项目都可以看到

#配置使用Git仓库的人员姓名

$ git config --global user.name "share" 

#配置使用Git仓库的人员email,填写自己的公司邮箱

$ git config --global user.email "[email protected]

git仓库将存放在目录/Users/ct/etc/docker/gitlab/data/git-data/repositories/下,gitlab允许创建组,将多个仓库纳入到一个组中,每个组在repositories下面对应于一个与组名称相同的子目录

导入仓库时,利用sudo chown命令,将仓库的拥有者的用户名和组名改为和repositories目录的拥有者相同,以保证gitlab可以访问该仓库。

GitLib有五种身份权限,分别是:

Owner 项目所有者,拥有所有的操作权限

Master 项目的管理者,除更改、删除项目元信息外其它操作均可

Developer 项目的开发人员,做一些开发工作,对受保护内容无权限

Reporter 项目的报告者,只有项目的读权限,可以创建代码片断

Guest 项目的游客,只能提交问题和评论内容

相关推荐