基于docker的gitlab安装、设置和内存优化

基于docker的gitlab安装,大家一定要看一下官方文档: https://docs.gitlab.com/omnibus/docker/

我的这个gitlab安装有一些约束条件:
1. 没有域名,只有IP
2. 服务器内存只有4G
3. 内部人员协同开发,无需使用电子邮件
4. 仅仅用于最基本的git协同开发,没有使用auto devops
5. 没有采用 https,只暴露80端口,其他的22端口也无需暴露
6. 没有采用 Prometheus
7. 采用 docker-compose 来安装

docker-compose.yml 配置如下:

 gitlab:
   image: 'gitlab/gitlab-ce:latest'
   restart: always
   container_name: gitlab
   environment:
     - GITLAB_OMNIBUS_CONFIG=external_url 'http://192.168.1.100'
     - TZ=Asia/Shanghai
   ports:
     - '80:80'
   volumes:
     - '/srv/gitlab/config:/etc/gitlab'
     - '/srv/gitlab/logs:/var/log/gitlab'
     - '/srv/gitlab/data:/var/opt/gitlab'

这个配置文件解释一下:
TZ=Asia/Shanghai详见这篇文章:设定docker容器时间的3种方法

通过 docker-compose up -d gitlab 起来后,别忘记了有一个安全问题,仅内部访问,限制外界访问,详见这篇文章:Docker中限制网络访问中的ext_if是什么?

gitlab起来后,登录 root 的账号,登录后,进行应用管理设置,其中关闭 auto devops 这个功能:
Admin area –> Settings –> CI/CD –> Default to Auto DevOps pipeline for all projects 前面的勾去掉。

修改 /srv/gitlab/config/gitlab.rb,将 prometheus 禁用:
prometheus_monitoring[‘enable’] = false

内存优化

上述过程做好后,过了一天,发现gitlab运行相当慢,一看服务器内存已经没有了,而且使用了大量的swap,于是上网查如何内存优化 gitlab,找到了这篇讲得很全面的文章:解决GitLab内存消耗大的问题。最终我的优化如下:

unicorn['enable'] = true
unicorn['worker_timeout'] = 60
unicorn['worker_processes'] = 2

unicorn['worker_memory_limit_min'] = "300 * 1 << 20"
unicorn['worker_memory_limit_max'] = "500 * 1 << 20"

sidekiq['concurrency'] = 16

postgresql['shared_buffers'] = "256MB"
postgresql['max_worker_processes'] = 8

重启后,观察了2天,内存始终消耗为 1.5-2 G之间。


上述的内容已经有些过时了,最新的gitlab有些不同了,这里做一些补充

  • 假如安装的时候,外网不能用80端口,那么docker-compose配置文件应该这么设定:
 gitlab:
   image: 'gitlab/gitlab-ce:latest'
   restart: always
   container_name: gitlab
   environment:
     - GITLAB_OMNIBUS_CONFIG=external_url 'http://192.168.1.100:8000'
     - TZ=Asia/Shanghai
   ports:
     - '8000:8000'
   volumes:
     - '/etc/gitlab/config:/etc/gitlab'
     - '/etc/gitlab/logs:/var/log/gitlab'
     - '/etc/gitlab/data:/var/opt/gitlab'
  • 内存优化已经改了,成了:

puma[‘enable’] = true
puma[‘worker_timeout’] = 60
puma[‘worker_processes’] = 2
puma[‘max_threads’] = 4
puma[‘per_worker_max_memory_mb’] = 1024
sidekiq[‘max_concurrency’] = 16
postgresql[‘shared_buffers’] = “256MB”
postgresql[‘max_worker_processes’] = 8

  • 安装好后,初次登录,居然不能指定root的密码了,需要参照官方文档来进行设定:https://docs.gitlab.com/ee/security/reset_user_password.html ,但是这个文档只是涉及在服务器上传统安装gitlab,那么在docker中该如何设定呢?

先进入容器内,docker exec -it gitlab /bin/bash,然后执行 gitlab-rake “gitlab:password:reset”,意外的事情发生了,居然久久没有反应,感觉像死掉一样,过了大概5分钟,才会出来一些提示,在这个5分钟内,假如你等不及敲了一些回车,对不起,这个过程还要重新再来。所以记住:这个过程会很长,不要着急,千万不要敲回车。(这一段是修改密码的,现在的gitlab有设定初始密码的地方,见下面)

  • Visit the GitLab URL, and log in with username root and the password from the following command:

docker exec -it gitlab grep ‘Password:’ /etc/gitlab/initial_root_password

发表评论

邮箱地址不会被公开。 必填项已用*标注