zoukankan      html  css  js  c++  java
  • 纯docker环境下安装docker版的gitlab的详细过程(看了这篇助你跳过N多的坑)

    接下来看之前,先说说服务器的情况:

    服务器已经装好了nginx,mysql,php-fpm,且都是docker的,mysql因为需要装了两个,一个5.7,一个8.0。现在需要装的是docker版的gitlab。至于gitlab是干嘛的,简单一点说就是github的亲戚,代码管理用的,至于更详细的自己百度了。

    下面具体说过程:

    #拉取gitlab镜像
    docker pull gitlab/gitlab-ce

    这个看你服务器的网速,我的速度还可以,默认下载是最新版的。其实新版的还可以,带语言切换的,默认是英文的,可以在设置-》偏好设置-》语言里选择简体中文。

    拉下来现在最新的版本是:

    GitLab: 12.8.5 (7b66e67a28a) FOSS
    GitLab Shell: 11.0.0
    PostgreSQL: 10.12

    接着转入正题,image下好了,就把容器开起来吧:

    开容器之前,需要建立三个文件夹,来挂接虚拟机下的配置、数据和日志的:

    $ makedir -p /mnt/gitlab/etc     makedir -p /mnt/gitlab/data      makedir -p /mnt/gitlab/log

    docker run --detach --hostname git.xxx.com --publish 8443:443 --publish 8880:8880 --publish 60022:22 --name gitlab --restart unless-stopped -v /mnt/gitlab/etc:/etc/gitlab -v /mnt/gitlab/log:/var/log/gitlab -v /mnt/gitlab/data:/var/opt/gitlab 容器ID

    这里挂接了几个端口,8443到容器里的443,然后是8880到容器里的8880(这里一定不要挂容器里的80端口,我之前就是因为这反复装了容器好几次。还有一个原因,如果是挂80,那么push上去的文档地址默认是不带端口,打开就是404,此处是最开始的一个大坑),60022挂接的是容器里的ssh端口22,其他的看看也就明白了。

    因为宿主机里已经有装了nginx的docker了,已经有使用80和443了,所以这两个端口是一定是要排除的了。

    执行完上面的命令,再来一个docker ps,看一下gitlab的容器是不是有了,如果一切正常,肯定是有的。

    接下来是编辑配置文件,也就是在宿主机下编辑gitlab.rb文件,具体命令是:

    nano /mnt/gitlab/etc/gitlab.rb 

    这里说下,我这里所有的文档编辑都用的nano,不是vim,个人习惯问题,勿喷。

    gitlab.rb文件内容很多的,不过都被#起来了,所以这里只给出最核心的配置,复制到里面即可

    external_url 'http://git.xxx.com:8880'
    nginx['listen_addresses'] = ['*']
    nginx['listen_port'] = 8880
    gitlab_rails['gitlab_shell_ssh_port'] = 60022

    postgresql['shared_buffers'] = "256MB"
    postgresql['max_connections'] = 200

    需要说明的是,我这里的环境都是docker,所以不存在什么nginx冲突的事情。external_url这里的域名是加了端口的,因为设置了非80端口,需要特别指定一下gitlab里的nginx需要监听的端口。另外还有宿主机和gitlab里的ssh对应的端口。

    至于postgresql两个是设置gitlab里数据库的性能。

    这里为什么external_url 一定要加端口呢。因为不加的话,你push上去的文件地址就会缺少端口,打开就是404或者文件不存在。此处是个大坑,之前没留意,反反复复折腾了好几次。

    接下来需要编辑 /mnt/gitlab/data/gitlab-rails/etc/gitlab.yml 文件。

    nano /mnt/gitlab/data/gitlab-rails/etc/gitlab.yml

    打开里面只需要修改host和port的值就OK了,其他的不用管。说说这里的奇怪事,之前创建的容器,这里该过端口了,但是一执行下面的gitlab-ctl reconfigure命令,然后这个端口就会改为80,而且还不是自己改的,很奇葩的问题。然后要么系统开不起来,要么占端口,要么系统起来了,但是push上去的问题的地址就是却端口的,总之有些诡异。不过我觉得还是跟上面gitlab.rb的配置有关系,改成上面的配置后就没出现过这些奇怪的问题。为了在全docker环境下安装gitlab,那gitlab的容器不知道被我撸了多少遍,其中遭遇的坑只有自己知道。废话太多了,还是继续吧。

    ...

    host:git.xxx.com

    port:8880

    ...

    修改好后保持,退出,进入容器内,应用重新配好的配置并重启GitLab,然后查看GitLab的状态。

    docker exec -ti gitlab /bin/bash

    gitlab-ctl reconfigure #花时间比较多
    gitlab-ctl restart

    gitlab-ctl status

    然后exit退出容器,出来看gitlab的状态吧,docker ps

    如果gitlab,提示还在 starting,那你就还需要等待。如果是health里,那就可以打开网址看了。如果是unhealth,那很有可能是配置文件配置有问题,需要返回去修改。

    如果打开http://git.xxx.com:8880,出现502的提示,那很有可能是端口的问题,可能端口冲突,或者防火墙没开启这个端口,这里就不细说了。

    如果一切正常(health),那么就打开http://git.xxx.com:8880看吧。具体怎么配置就不细说了,大概说下。

    首次登陆需要你设置root的密码,然后登陆。登陆后直接到个人中心里面的设置(setting)的偏好配置(preferences),在里面找到语言(language),改为简体中文。然后再刷新,简体中文就出来了,也不用像之前的版本装语言包了。

    最核心的需要注意的就是创建一个项目后,你看一下克隆的那个按钮,看一下ssh和http那两个地址是否都是网址带端口号的,然后你再pull一个文件上去,看看文件的地址是否也带了端口号的,如果是,那么你打开也可以看到代码,否则打开就是404或者"file not found"的提示,这个提示其实是告诉你缺少端口号。如果上面说的都正常,那么恭喜你,gitlab的docker被你撸好了。

    参考文章(感谢各位前面带路的大神):

    https://www.cnblogs.com/zuxing/articles/9329152.html

    https://segmentfault.com/a/1190000014305359

    https://docs.gitlab.com/omnibus/docker/

    最后再啰嗦一句,git,除了安装官方的Git工具,最好还装个TortoiseGit,省不少事,只要配置好了,撸起来相当舒心,节约不少时间。

  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/eaglepie/p/12482937.html
Copyright © 2011-2022 走看看