社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

使用 Docker 搭建 GitLab

JamesGeek • 4 年前 • 171 次点击  
阅读 4

使用 Docker 搭建 GitLab

gitlab-logo.png

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

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

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
复制代码

docker-pull-gitlab.png

下载完成之后只需要一行命令即可启动 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
复制代码

docker-run-gitlab.png

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

gitlab-login.png

gitlab-show.png

配置邮件服务器

想要让 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
复制代码

mail-test.png

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

配置 Git 仓库访问路径

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

如果域名不存在的话,这个地址是无法进行 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 形式为例:

容器的常用操作

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

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

# 关闭 gitlab
$ sudo docker stop gitlab

# 重启 gitlab
$ sudo docker restart gitlab
复制代码

其他

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/32141
 
171 次点击