资讯专栏INFORMATION COLUMN

使用docker搭建gitlab环境

Tikitoo / 2487人阅读

摘要:服务的依赖实现解耦,有多个服务依赖同一个,其中一个需要重启,而导致其他服务中断最重要的原因我想试试闲话少说了。。。拉取镜像注意如果没有指定对应的版本,默认会拉取版本经过漫长的等待。。。也可能会出现莫名其妙的问题。。。

docker搭建gitlab 构想:
通过 docker 容器技术,在centos7系统下,使用docker镜像,安装gitlab,并将gitlabhttp,https,ssh端口映射到其他端口;在宿主机中装入nginx,通过nginx反向代理技术访问宿主机中的容器;
至于为什么要这样折腾嘛。。。(个人看法)

不同的服务依赖的环境各有差异

当服务需要迁移的时候,很多环境需要重新搭建其实也是挺崩溃的,通过容器技术可以更快的实现迁移

不同的服务对宿主机的性能是有损耗的,通过容器可以更好的控制和监管(不会出现一个服务跑挂了一台机器。。。)

服务的依赖实现解耦,(eg:有多个服务依赖同一个nginx,其中一个需要重启nginx,而导致其他服务中断)

最重要的原因(我想试试....~O(∩_∩)O~)

闲话少说了。。。开始撸。。。(docker的安装基本操作就不在这里多说了)有需要的小伙伴可以看下:

docker简单入门

docker入门到实践

1.拉取gitlab镜像 1.1.官网找到需要的镜像

Docker Hub

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

1.2.拉取gitlab镜像
docker pull gitlab/gitlab-ce

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

经过漫长的等待。。。

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

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    latest              5d8ab6b06918        4 days ago          1.43GB
2.run容器

运行:

docker run --detach --hostname gitlab.xxx.com --publish 444:443 --publish 81:80 --publish 23: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 5d8ab6b06918

--hostname :指定容器中绑定的域名,会在创建镜像仓库的时候使用到,这里绑定gitlab.xxx.com

--publish:端口映射;容器内的443,80,22端口分别映射到宿主机的444,81,23端口

--volume :挂载数据卷,映射到容器中去的容器外部存储空间

5d8ab6b06918 :镜像的ID

数据存储地方

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

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

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS                                                          NAMES
9e12ae220c14        5d8ab6b06918        "/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

上面的容器使用的是官方Omnibus GitLab软件包,所有的配置都在唯一的配置文件 /etc/gitlab/gitlab.rb

当然我们也可以进入容器内部通过shell会话进行相关操作

docker exec -it gitlab /bin/bash
3.1 SMTP Setting

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

Postfix还要安装其他东西,sendmai又是比较老,相对较下SMTP配置起来会比较方便,我使用的就是SMTP;

1. 编辑/etc/gitlab/gitlab.rb文件(加到文件最后面就好了)。本来想用QQ邮箱的,但是怎奈QQ邮箱配置了半天,还是报个535(秘钥验证不通过),最后放弃了选择163
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"] :发出用户,注意跟用户名保持一致

获取邮箱客户端秘钥:

2.如上配置完成后可以重新加载gitlab的配置
gitlab-ctl reconfigure
3.测试邮件发送
gitlab-rails console
Notify.test_email("543314032@qq.com", "Message Subject", "Message Body").deliver_now

应该会成功。。。

注意:

其实你在宿主机的 /srv/gitlab/config 目录的下也能找到gitlab.rb,修改这个文件也可以;但是修改完成后,必须重启容器

docker restart gitlab

只要容器重启Gitlab就会自动重新加载配置;

网上还有很多教程修改的 gitlab的其他配置文件实现SMTP的配置,我不太建议,因为文档上面要求是在gitlab.rb上修改相关的配置的;其他文件修改,如果不是很熟悉可能会混乱。。。也可能会出现莫名其妙的问题。。。

如果你选择的是其他服务商的smtp,具体配置可以看文档

SMTP settings

更多的配置可以参考官方文档:
Omnibus GitLab

来到这里其实你已经可以通过访问81端口来访问我们的gitlab了

4.Nginx反向代理

我的nginx是通过rpm安装的;具体的安装这里就不多说了!

打开nginx的配置文件

upstream  git{
    # 域名对应 gitlab配置中的 external_url
    # 端口对应 gitlab 配置中的 nginx["listen_port"]
    server  域名:端口;
}


server{
    listen 80;
    # 此域名是提供给最终用户的访问地址
    server_name 域名;

    location / {
        # 这个大小的设置非常重要,如果 git 版本库里面有大文件,设置的太小,文件push 会失败,根据情况调整
        client_max_body_size 50m;

        proxy_redirect off;
        #以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 反向代理到 gitlab 内置的 nginx
        proxy_pass http://git;
        index index.html index.htm;
    }
}
5.问题总结
5.1 external_url 设置

external_url 是一个很重要的配置,GitLab的资源(例如:git创库,文件,图片)都是基于这个URL;说白了就是我们clone的地址;

external_url 的默认为:

external_url "GENERATED_EXTERNAL_URL"

其实就是 http://hostname

可以把这个值改成对应的主机名或者ip地址作为项目的仓库地址为:

// http
http://:/<组名>/<项目名>.git
// ssh
git@:<组名>/<项目名>.git

也可以直接将其改成IP

external_url "http://10.2.237.56"
5.2 修改SSH

如果是ssh端口,需要修改gitlab_shell_ssh_port

gitlab_rails["gitlab_shell_ssh_port"] = 23

如果要修改 ssh 的域名,就需要修改 gitlab_ssh_host

gitlab_rails["gitlab_ssh_host"] = "10.2.123.123"
5.3 nginx端口

如果你修改了external_url 并加了端口,你会突然发现,gitalweb 访问不了了,其实你不用慌张,因为这是因为nginx 默认监听的是 external_url 的端口

你只需要更改下 nginx 的端口配置就好了

# nginx["listen_port"] = nil
nginx["listen_port"] = 80

以上的配置都是在 gitlab.rb 里面改的!!!

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

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

相关文章

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

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

    FWHeart 评论0 收藏0
  • docker gitlab环境搭建

    摘要:下搭建下载守护进程方式启动运行一个容器运行容器运行容器成功安装后在浏览器中输入服务器用户名密码进入管理界面参考文档 docker下gitlab 搭建 下载 docker-compose.yml wget https://raw.githubusercontent... 守护进程方式启动 docker-compose up -d 运行一个PostgreSQL容器 docker run ...

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

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

    kumfo 评论0 收藏0
  • 搭建常见测试工具环境docker脚本

    摘要:整理资料的时候发现一些干货,以下为搭建等测试环境的脚本,对不熟的同学可自行百度,持续更新。 整理资料的时候发现一些干货,以下为搭建Jenkins、Registry、SVN、GIT、SonarQube、OpenSTF等测试环境的docker脚本,对docker不熟的同学可自行百度docker-compose,持续更新。 用法及注意事项 1,需要Linux,并安装docker及docker...

    TigerChain 评论0 收藏0

发表评论

0条评论

Tikitoo

|高级讲师

TA的文章

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