docker配置安装gitlab

进入root用户进行操作

安装docker

查看2020-11-09的 docker配置安装nextcloud

docker安装gitlab

拉取gitlabc-ce

1
docker run -d -p 208:80 -p 230:22 --name gitlab --restart always -v /home/data/docker/gitlab-ce/config:/etc/gitlab -v /home/data/docker/gitlab-ce/logs:/var/log/gitlab -v /home/data/docker/gitlab-ce/data:/var/opt/gitlab gitlab/gitlab-ce:latest
  • 这三个是为了把docker里 gitlab 的一些文件夹映射到服务器上,方便https什么的,两边文件会共享

    -v /home/data/docker/gitlab-ce/config:/etc/gitlab

    -v /home/data/docker/gitlab-ce/logs:/var/log/gitlab

    -v /home/data/docker/gitlab-ce/data:/var/opt/gitlab

  • 把docker里面的80和22映射到208和230,

    这个是为了防止docker里面的80和22端口已经被占用。

    • 注意服务器的208和230对外界要公开,把防火墙端口打开,

    • 80是网页的端口,22是用来ssh访问git的,注意230不要是服务器本来的ssh端口

      -p 208:80 -p 230:22

配置

进入docker里的gitlab

1
docker exec -it gitlab /bin/bash

编辑

1
vi /etc/gitlab/gitlab.rb

添加下面这三行就行

icpcs.lzu.edu.cn是服务器的域名,208是刚才对外的网页端口,230是git的ssh免密访问

1
2
3
external_url 'http://icpcs.lzu.edu.cn:208'
gitlab_rails['gitlab_ssh_host'] = 'icpcs.lzu.edu.cn'
gitlab_rails['gitlab_shell_ssh_port'] = 230

如果要ssl的话,先自己certbot设置免费的CA证书,再添加这几个

/etc/gitlab/ssl/ 这个是我把服务器上的CA证书复制到了刚才映射的外部文件夹/home/data/docker/gitlab-ce/config/ssl/,但是docker里的gitlab访问就变成了/etc/gitlab/ssl/

1
2
3
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"

更新

注意,运行很慢,慢慢等,还有就是每次这样更新配置以后,直接访问网页可能502之类的,不用急,等会,多刷新几次就好了,不过第一次刷新也不行,看最后

1
2
3
gitlab-ctl reconfigure

gitlab-ctl restart

如果想看看配置有没有成功,这里看

1
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

闭坑

  • 配置以后没反应,看这个,特坑

    删除(docker rm -f gitlab)以后再来一次,把刚才的80改成外部的的208,其他不要改

    1
    docker run -d -p 208:208 -p 230:22 --name gitlab --restart always -v /home/data/docker/gitlab-ce/config:/etc/gitlab -v /home/data/docker/gitlab-ce/logs:/var/log/gitlab -v /home/data/docker/gitlab-ce/data:/var/opt/gitlab gitlab/gitlab-ce:latest

    记住,很慢,等会,可能好几分钟

    1
    docker ps -a

    大概这样的时候就好了,注意 STATUS ,一开始是 (healthy starting),等会,等它变成 (healthy),然后多刷新几次网页就好了,记住很慢, 字诀

    1
    2
    CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                  PORTS                                                        NAMES
    a8d27b67f0d7 gitlab/gitlab-ce:latest "/assets/wrapper" 12 hours ago Up 12 hours (healthy) 80/tcp, 443/tcp, 0.0.0.0:208->208/tcp, 0.0.0.0:230->22/tcp gitlab

  • 配置以后特别卡、或者内存占用高

    运行时,默认使用服务器核数+1,如果你的服务器核数特别多,就会很卡,占用内存很多

    因为我用了的服务器56个核心,所以我限制了一下4个,数据库和gitlab并发数都限制了8,16,以及数据库缓存也限制了。

    进入docker的gitlab

    1
    docker exec -it gitlab /bin/bash

    编辑

    1
    vi /etc/gitlab/gitlab.rb

    添加如下, > 注意,新版的gitlab,用的是puma,nuicorn已经默认false了

    1
    2
    3
    4
    5
    6
    ## 减少内存,且防止卡
    puma['worker_processes'] = 4
    puma['per_worker_max_memory_mb'] = 2048
    sidekiq['concurrency'] = 16
    postgresql['shared_buffers'] = "256MB"
    postgresql['max_worker_processes'] = 8

    刷新配置

    1
    gitlab-ctl reconfigure

    重启gitlab

    1
    gitlab-ctl restart

    等待几分钟以后刷新网页,否则502

  • 备份

    进入docker的gitlab

    1
    docker exec -it gitlab /bin/bash

    编辑

    1
    vi /etc/gitlab/gitlab.rb

    添加如下:3600*24*90天=7776000

    1
    gitlab_rails['backup_keep_time'] = 7776000

    刷新配置

    1
    gitlab-ctl reconfigure

    重启gitlab

    1
    gitlab-ctl restart

    等待几分钟以后刷新网页,否则502

    退出docker,在系统中添加crontab

    1
    crontab -e

    1
    2
    # 备份docker-gitlab
    * 4 * * * docker exec gitlab gitlab-rake gitlab:backup:create

    备份位置,之前外挂

    -v /home/data/docker/gitlab-ce/data:/var/opt/gitlab

    所以在

    /home/data/docker/gitlab-ce/data/backups


本文作者:yuhldr
本文地址: https://yuhldr.github.io/posts/21265.html
版权声明:转载请注明出处!