使用docker搭建GitLab环境

使用docker搭建GitLab环境

Posted by 冷小冰 on April 22, 2019

使用docker搭建GitLab环境

1.拉取gitlab镜像

1.1.搜索镜像

Docker Hub

在官网可以找到各种各样需要的镜像,通过搜索可以找到gitlab镜像。

1.2.拉取gitlab镜像

1
docker pull gitlab/gitlab-ce

注意:如果没有指定对应的版本,默认会拉取 latest版本。

通过docker images 命令看到gitlab镜像证明你已经pull完了

1
2
3
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    latest              c752bc978a4b        4 days ago          1.78GB

2.启动gitlab

运行:

1
docker run --detach --hostname 192.168.3.34 --publish 444:443 --publish 81:80 --publish 23:22 --name gitlab --restart always --volume /opt/gitlab/config:/etc/gitlab --volume /opt/gitlab/logs:/var/log/gitlab --volume /opt/gitlab/data:/var/opt/gitlab c752bc978a4b
  • –hostname :指定容器中绑定的域名,会在创建镜像仓库的时候使用到,这里绑定192.168.3.34
  • –publish:端口映射;容器内的443,80,22端口,分别映射到宿主机的444,81,23端口
  • –volume :挂载数据卷,映射到容器中去的容器外部存储空间
  • c752bc978a4b :镜像的ID

数据存储地方

本地的位置 容器的位置 作用
/opt/gitlab/config /etc/gitlab 用于存储GitLab配置文件
/opt/gitlab/logs /var/log/gitlab 用于存储日志
/opt/gitlab/data /var/opt/gitlab 用于存储应用数据

通过docker ps 命令看到gitlab容器证明已经运行成功了

1
2
3
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS                                                          NAMES
9e12ae220c14        c752bc978a4b        "/assets/wrapper"   13 minutes ago      Up 13 minutes (healthy)   0.0.0.0:23->22/tcp, 0.0.0.0:81->80/tcp, 0.0.0.0:444->443/tcp   gitlab

3.配置GitLab

所有的配置都在唯一的配置文件 /opt/gitlab/config/gitlab.rb

本文是直接修改生成的配置文件,当然也可以进入容器内部通过shell会话进行相关操作。

1
2
# 进入容器命令
docker exec -it gitlab /bin/bash

3.1.配置端口

编辑gitlab.rb文件

修改如下几个端口,修改与docker映射的端口一致

1
2
3
4
5
6
7
8
9
10
11
# external_url 'GENERATED_EXTERNAL_URL'
external_url "http://192.168.3.34:81"

# gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab_rails['gitlab_shell_ssh_port'] = 23

# nginx['listen_port'] = nil
nginx['listen_port'] = 81

#如果用了Https,下面的端口也修改
# nginx['redirect_http_to_https_port'] = 80

说明

  • external_url:GitLab的资源都是基于这个URL,其实就是clone的地址,如果不配置端口81,使用http进行clone时,页面链接会不显示端口,复制出来的链接会无效;
  • gitlab_shell_ssh_port:ssh端口,使用ssh进行clone时的端口;
  • listen_port:nginx监听的端口;
  • redirect_http_to_https_port:使用https时,nginx监听的端口;

注意:这里修改完毕,会有一个,具体看目录 3.4.重新创建

3.2.邮箱配置

GitLab的使用过程中涉及到大量的邮件,而邮件服务可以选择使用Postfixsendmai配置SMTP服务其中一种;

Postfix还要安装其他东西,sendmai又是比较老,相对较下SMTP配置起来会比较方便。

编辑gitlab.rb文件

添加如下配置

1
2
3
4
5
6
7
8
9
10
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "XXX@163.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "XXX@163.com"
user["git_user_email"] = "XXX@163.com"

说明:

  • gitlab_rails[‘smtp_address’] :SMTP服务地址,不同的服务商不同
  • gitlab_rails[‘smtp_port’] :服务端口
  • gitlab_rails[‘smtp_user_name’] :用户名,自己注册的
  • gitlab_rails[‘smtp_password’] :客户端授权秘钥
  • gitlab_rails[‘gitlab_email_from’] :发出邮件的用户,注意跟用户名保持一致
  • user[“git_user_email”] :发出用户,注意跟用户名保持一致

3.3.刷新配置

1
2
3
4
# 进入容器
docker exec -it gitlab /bin/bash
# 刷新配置
gitlab-ctl reconfigure

3.4.重新创建

经过上述的配置,会发现打不开gitlab的网页,这是因为修改了external_url,会导致container内部的项目80端口也被直接转到了81端口,所以需要重新映射端口。

关闭容器

1
docker stop gitlab

删除容器

1
docker rm gitlab

重新创建容器

将原来的publish 81:80改为publish 81:81

1
docker run --detach --hostname 192.168.3.34 --publish 444:443 --publish 81:81 --publish 23:22 --name gitlab --restart always --volume /opt/gitlab/config:/etc/gitlab --volume /opt/gitlab/logs:/var/log/gitlab --volume /opt/gitlab/data:/var/opt/gitlab c752bc978a4b