使用Docker安装GitLab

hackpython.png

前言

本文是「从零构建 GitLab CI/CD 流水线」一文的先导文章。

操作系统环境为Centos7,使用Docker进行GitLab的安装,如果Centos7中没有安装Docker,可以参考「Centos7安装docker-ce」一文,它同为「从零构建 GitLab CI/CD 流水线」先导文。

安装GitLab

gitlab 镜像分为两个版本:

gitlab-ce 社区版
gitlab-ee 企业收费版

这里使用社区版则可,直接安装官方镜像,目前(2020/1/14)官方镜像大小约1.8G,如果你没有设置Docker镜像源,Docker会默认从国外Docker官方Hub去拉去进行,速度难以让人接受,参考「Centos7安装docker-ce」一文进行设置。

拉取gitlab-ce源

docker pull gitlab/gitlab-ce:latest

运行Gitlab

下载完后,先不急着运行Gitlab,为了避免容器运行时数据丢失,需要使用Docker volume(容器卷)方式来将数据映射到本地,这里创建/home/gitlab目录来存放相应的数据,具体对应关系如下表。

| 宿主机位置 | 容器位置 | 作用 |
| --- | --- | --- |
| /home/gitlab/config | /etc/gitlab | 用于存储 GitLab 配置文件 |
| /home/gitlab/logs | /var/log/gitlab | 用于存储日志 |
| /home/gitlab/data | /var/opt/gitlab | 用于存储应用数据 |

通常gitlab会与git配置使用,而git会采用ssh协议来操作git仓库,而我们连接宿主机时也使用ssh,如果不修改默认sshd端口,git使用默认配置就会出现问题,这里将主机的sshd端口从22端口改为15678端口。

Centos7防火墙机制改为了firewall,拥有更加严格的安全机制,你需要按照下面方式去修改。

1.编辑 /etc/ssh/sshd_config,将 #Port 22 注释去掉,将数字 22 更改为 15678。

2.重启sshd服务

systemctl restart sshd

3.配置firewall,使15678端口可以对外提供服务,否则无法使用ssh进行远程登录了。

semanage port -a -t ssh_port_t -p tcp 15678
firewall-cmd --permanent --add-port=15678/tcp
firewall-cmd --reload 

完整上面两项配置,就可以运行docker了。

docker run \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --volume /home/gitlab/config:/etc/gitlab \
    --volume /home/gitlab/logs:/var/log/gitlab \
    --volume /home/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce

这里将主机的 443、80、22 端口直接转发到容,同时利用--volume将gitlab的配置、日志与数据都持久化到本地

除了修改宿主机sshd端口外,你还可以选择另外一种方法,就是修改gitlab容器相应的端口,但生产环境通常会不启用22端口,避免被人恶意暴力尝试,各位可以进一步优化。

使用Gitlab

Gitlab容器启动后,直接访问 http://ip 就可以进入gitlab访问页面,第一步要做的就是给root用户设置密码,设置完后,通过root + 设置的密码登录。

为了方便管理,通过要做的就是创建不同的组,然后通过不同的组来管理组下的成员,比如这里创建一个组叫「懒编程」(公众号名)。

接着创建成员,初次创建成员时,不允许设置成员密码。

成员创建完后,因为邮件服务未开启(可以配置SMTP开启邮件服务),所以再次进入成员编辑页,手动给予其密码。

用户登录时,会要求其自己再次设置密码,从而修改原本的默认密码

将用户添加到对应的组

在「懒写作」组的主页创建项目

通过下面代码操作项目,即创建一个README.md文件,修改后,将该文件添加到gitlab上。

git clone http://244788b062fc/lazy_dev/test_service.git
cd test_service
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

最终效果

参考

通过 docker 搭建自用的 gitlab 服务

你可能感兴趣的:(docker,gitlab,gitlab-ce)