资讯专栏INFORMATION COLUMN

使用 Docker 搭建 GitLab

JeOam / 900人阅读

摘要:作为互联网工作者,相信对这个全球最大的同性交友网站一定不会陌生,使用的是目前如日中天的分布式版本控制系统。等这个状态变成时则说明已经部署完成,可以访问了。修改完成后,输入命令使配置生效,然后重启即可。

作为互联网工作者,相信对 GitHub 这个 全球最大的同性交友网站 一定不会陌生,GitHub 使用的是目前如日中天的 Git 分布式版本控制系统。

Git 是什么?Git 是目前世界上最先进的分布式版本控制系统,没有之一!关于 GitGitHub 的相关内容可以查看我往期的教程。而本篇博客要介绍的是如何搭建一套私人的类似于 GitHub 的网站【GitLab】,它可以为个人、组织、企业提供项目或代码的管理功能。

Git 与 GitHub

具体请查看我往期的博客文章:

Git 基础用法总结

Git 系列之初识 Git 与 Github

Git 系列之 Github 基础设置及使用详解

安装环境

GitLab 的搭建有多种方式,在本篇博客将介绍一种比较简单快捷的方式,那就是使用 Docker 来搭建。

系统:Ubuntu 18.04

Docker: 18.9.05

GitLab: 最新版本 latest

需求内存:最低 2 GB

想要使用 Docker 来搭建 GitLab 的话需要先安装 Docker, 关于 Docker 的详细安装步骤已经在我的上一篇博客中介绍了。请前往查看:Docker 之 ubuntu 安装。

搭建 GitLab

在按照上篇博客成功安装了 Docker 之后,我们就可以在 Docker 中来搭建 GitLab 了。

GitLab 分为 社区版(Community Edition,缩写为 CE)和 企业版(Enterprise Edition,缩写为 EE)。社区版是免费的,而企业版包含一些收费服务,一般来说个人开发者用社区版就足够了,本篇博文的教程也只是针对社区版。

首先需要先下载 GitLab CE 的镜像,使用下面的命令进行下载,因为文件较大,所以可能需要一点时间,耐心等待即可。

# 不加 tag 则默认为最新版本 latest (一般使用这种)
$ sudo docker pull gitlab/gitlab-ce

# 如果需要下载其他版本,加上对应的 tag 即可,如:
$ sudo docker pull gitlab/gitlab-ce:rc

下载完成之后只需要一行命令即可启动 GitLab ,复制下面的命令直接运行即可。

$ sudo docker run --detach 
  --hostname gitlab.example.com 
  --publish 443:443 --publish 80:80 --publish 22:22 
  --name gitlab 
  --restart always 
  --volume /srv/gitlab/config:/etc/gitlab 
  --volume /srv/gitlab/logs:/var/log/gitlab 
  --volume /srv/gitlab/data:/var/opt/gitlab 
  gitlab/gitlab-ce:latest

这条命令很长,我们来分解一下看看每行都代表什么意思。

$ sudo docker run --detach 
  --hostname gitlab.example.com    # 设置主机名或域名
  --publish 443:443 --publish 80:80 --publish 22:22  # 本地端口的映射
  --name gitlab      # gitlab-ce 的镜像运行成为一个容器,这里是对容器的命名
  --restart always   # 设置重启方式,always 代表一直开启,服务器开机后也会自动开启的
  --volume /srv/gitlab/config:/etc/gitlab    # 将 gitlab 的配置文件目录映射到 /srv/gitlab/config 目录中
  --volume /srv/gitlab/logs:/var/log/gitlab  # 将 gitlab 的log文件目录映射到 /srv/gitlab/logs 目录中
  --volume /srv/gitlab/data:/var/opt/gitlab  # 将 gitlab 的数据文件目录映射到 /srv/gitlab/data 目录中
  gitlab/gitlab-ce:latest  # 需要运行的镜像

运行成功之后,可以使用下面的命令列表所有的容器,当然其中应该包括刚运行的 gitlab容器。

$ sudo docker container ls

如上图所示,可以看到 GitLab 已经在运行了,其他有一个属性 STATUShealth: starting,说明 gitlab 的服务正在启动中,还没有启动完毕。等这个状态变成 healthy 时则说明已经部署完成,可以访问了。使用 ip addr 命令查看系统的 IP 地址,然后在浏览器输入地址即可访问。

配置邮件服务器

想要让 GitLab 给你发送邮件,还要配置一下邮件服务器,这里以QQ邮箱的 IMAP/SMTP服务 来配置。

打开邮箱->设置->账户,然后开启 IMAP/SMTP服务,然后根据文档获取 授权码 ,这步比较重要。

然后打开在系统中打开文件 /srv/gitlab/config/gitlab.rb 文件,可以使用geditvivim等等编辑器编辑。找到 Email Settings的注释位置,然后添加以下内容:

### Email Settings
gitlab_rails["smtp_enable"] = true # 开启 SMTP 功能
gitlab_rails["smtp_address"] = "smtp.qq.com"
gitlab_rails["smtp_port"] = 465 # 端口不可以选择587,测试过会发送邮件失败
gitlab_rails["smtp_user_name"] = "212****71@qq.com" # * 你的邮箱账号,也可以是ge**lin@qq.com等
gitlab_rails["smtp_password"] = "cdns********fdgc" # * 授权码,不是密码
gitlab_rails["smtp_authentication"] = "login"
gitlab_rails["smtp_enable_starttls_auto"] = true
gitlab_rails["smtp_tls"] = true
gitlab_rails["gitlab_email_from"] = "212****71@qq.com" # * 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错
gitlab_rails["smtp_domain"] = "qq.com" # 修改并不影响 可修改为exmail.qq.com/james.com 经测试完全不影响,删除也不影响,并且发送的邮件都是一样的。

上面这些参数,除了注释开头加了 * 的需要修改为你自己的信息之外,其他信息照写即可,配置完成后保存。然后输入下面的命令使配置生效。

# 使用 Docker安装的 gitlab 只能使用下面的命令,gitlab-ctl reconfigure命令是不会生效的
$ sudo docker exec gitlab gitlab-ctl reconfigure

使配置生效之后我们可以使用 gitlab 自带的工具进行一下测试。依次执行下面的命令:

# 开启 gitlab 的 bash 工具
$ sudo docker exec -it gitlab bash

# 开启 gitlab-rails 工具
$ gitlab-rails console production

# 发送邮件进行测试,换自己邮箱哈~
Notify.test_email("gekylin@gmail.com", "Message Subject", "Message Body").deliver_now

测试完成之后重启 gitlab 即可。

配置 Git 仓库访问路径

在之前第一次运行 gitlab 容器的时候,有一个参数 hostnamegitlab.example.com , 如果你没有配置相应域名的话,你的仓库的地址将会变为下面这样:

ssh : git@gitlab.example.com:James/test.git

http:http://gitlab.example.com/Jam...

如果域名不存在的话,这个地址是无法进行 clone 的。

为了解决这个问题,我们可以设置成 IP 或 你配置了的域名来访问。

打开文件 /srv/gitlab/config/gitlab.rb 文件并找到 # external_url "GENERATED_EXTERNAL_URL" 这行,去掉注释,并按照下面的格式修改。

# ip 形式
external_url "http://192.168.1.44"

# 域名形式
external_url "http://JemGeek.com"

# 子域名
external_url "http://gitlab.JemGeek.com"

# 其他形式
external_url "http://JemGeek.com/gitlab"

以上形式都是可以的。修改完成后,输入命令 sudo docker exec gitlab gitlab-ctl reconfigure 使配置生效,然后重启 gitlab 即可。

重启之后,仓库的地址将变为下面这样,以 ip 形式为例:

ssh : git@192.168.1.44:James/test.git

http:http://192.168.1.44/James/tes...

容器的常用操作

在 Docker 中,gitlab 是作为一个容器存在的,gitlab 的所有程序,配置,依赖等都在这个容器中。下面列出一些容器的常用操作命令。

# 开启 gitlab 容器
# 上面那个特别长的那一条命令仅在第一次运行 gitlab 的时候需要
# 之后开启 gitlab 使用下面的命令即可
$ sudo docker start gitlab

# 关闭 gitlab
$ sudo docker stop gitlab

# 重启 gitlab
$ sudo docker restart gitlab
其他

关于DockerGitLab 的知识还有很多,我会在后续的文章继续介绍,欢迎您持续关注本博客。

更多技术文章欢迎关注我的博客主页:http://JemGeek.com

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27811.html

相关文章

  • DevOps 从零开始-仓库环境搭建Docker,Nginx,Nexus,Gitlab,免费Htt

    摘要:本文章用于描述如何从零开始进行阿里云仓库的搭建,以及过程中遇到的相关问题。涉及的内容包括,,,,。目标硬盘挂载阿里云额外购买的硬盘服务,需要仅挂载后才可以正常使用。域名代理免费代理的域名通过阿里云域名解析暴露到外网。 本文章用于描述如何从零开始进行阿里云仓库的搭建,以及过程中遇到的相关问题。涉及的内容包括Docker,Nginx,Nexus,Gitlab,Https。 背景 需要搭建一...

    FWHeart 评论0 收藏0
  • Docker搭建GitLab

    摘要:二配置修改配置文件编辑文件端口。将容器时间和在一个时区三访问访问,系统默认的管理员账号为,第一次访问,会要求初始化管理员账号的密码。 官方中文教程:https://www.gitlab.com.cn/ins... 官方安装链接:https://about.gitlab.com/install 普通方式安装请见:https://segmentfault.com/a/11... 环境...

    kumfo 评论0 收藏0
  • Docker Swarm集群搭建教程

    摘要:现阶段,容器技术已经相当成熟,就算是中小型公司也可以基于镜像服务轻松搭建自己的集群服务。线上环境可以设置为,测试环境设置为安装创建一个项目登录创建一个项目。接下来我们就可以访问集群任意一台机器的端口。 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab、Aliyun镜像服务、Docker Swarm 轻松搭建自己的 Docker集群服务。 安装 Dock...

    endless_road 评论0 收藏0
  • 使用docker搭建gitlab环境

    摘要:服务的依赖实现解耦,有多个服务依赖同一个,其中一个需要重启,而导致其他服务中断最重要的原因我想试试闲话少说了。。。拉取镜像注意如果没有指定对应的版本,默认会拉取版本经过漫长的等待。。。也可能会出现莫名其妙的问题。。。 docker搭建gitlab 构想: 通过 docker 容器技术,在centos7系统下,使用docker镜像,安装gitlab,并将gitlab的http,https...

    Tikitoo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<