.net Core 系统 架构回忆录----Docker部署 git

github,gitlab,gitee的区别

github 是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。
gitee 即码云,是 oschina 免费给企业用的,不用自己搭建环境。
gitlab 类似 github,一般用于在企业内搭建git私服,要自己搭环境。
第一,github针对企业要收费,那当然是不同意,毕竟都想节约资金,那就还能使用gitee,或者gitlab了。
第二,但是码云虽然是免费的,而且不用自己搭环境,但是企业中把项目放在别人的服务器上,始终没有安全感。
第三,因此,衍生出了gitlab,就是用于企业搭私服,而且还是在自己的服务器上。

资源占用

作为 Git 托管服务器使用时,Gitea 资源占用明显要低得多。

静态硬盘占用上,Gitea 核心是一个 100 MiB 上下的可执行文件,外加上作为必要依赖的 Git(如果内置 SQLite 不够的话也需要单独部署一个 MySQL 或者 PostgreSQL 做数据库),而 GitLab 光 Docker image 大小就 GiB 级了。

内存方面,这里 Gitea 日常占用内存通常在几百 MiB 浮动,而 GitLab 的 Docker 容器目前内存占用是 GB级别的。GitLab CPU 占用率(相对于一个核心计算)日常待机在 35% 上下,而 Gitea 通常是 0.2% 左右。(这些都是日常无负载状态下的情况)

网站配置

Gitea 大部分配置都要通过修改 app.ini 并重启 Gitea 服务器来应用,后台管理面板基本没有可修改的配置,不能进行配置热修改。

GitLab 部分网络相关的配置(域名,端口,代理,邮箱等)需要修改 gitlab.rb 并重启 GitLab,剩下的大多选项都是在管理员面板里通过 Web UI 进行热修改并及时生效。

对于要稳定运行的 Git 托管服务器来说,Gitea 每次修改配置后想要生效都要离线一段时间,好在 Gitea 启动很快,我这里从启动到能正常访问大概只要 10 秒钟(数据库跑在另一个容器里,没有计算它的启动时间),而 GitLab 启动一次要一分多钟,但由于 GitLab 大部分配置都是热修改,除了最开始部署时需要修改配置,运行中基本没有重启的需求。

消息通知

GitLab 与 Gitea 都能配置邮件消息通知。

GitLab 每个用户都能设置自己接受的通知,或者完全拒绝邮件通知,设置的粒度可以细分到组/项目级别,管理员还能通过管理后台对用户手动群发邮件通知。

Gitea 的用户无法控制自己接受的通知,只能由管理员配置通知的类型,而且也只能进行全局范围的配置,无法细分到用户身上,而且所有通知都是 Gitea 的自动通知,管理员无法发送自定义通知。

存储库导入与镜像

Gitea 和 GitLab 也都支持导入第三方 Git 仓库,特别是提供了原生的迁移 GitHub 仓库的办法,可以连带着 Issue、PR 等其他数据一同导入进来。

CI/CD

谈 Gitea 与 GitLab 的区别,那肯定少不了 CI/CD 这个重头戏。

Gitea 没有提供内置的 CI/CD 支持,但是可以用 Gitea 提供的 API 与其他 CI 集成,目前推荐的比较多的似乎是是自部署 Drone CI,但也可以与 Travis CI 这类现成的 CI 集成。

Gitea 与 CI 的集成我没有亲自尝试过,但可以参考上面 gitea.com 里现成的例子。我本来想尝试部署 JetBrains TeamCity,但 Gitea 目前的 API 并不足以与 TeamCity 集成,这在后续版本中可能会改进。

而 GitLab 原生就集成了一套强大的 CI 功能,而且就像 GitHub Action 与 GitHub 那样,它与 GitLab 有着极为紧密的结合。

GitLab 用于执行 GitLab CI 的程序叫做 GitLab Runner。

总结:

人少 gitea,人多 gitlab。
没钱 gitea,有钱 gitlab。

gitea 轻量化,如果仅仅是代码仓库,小团队协作使用,建议 gitea 。
gitlab 全家桶大而全,对资源的要求也更高。

环境处理

#1:防火墙是否开启,开启了可以直接关闭,如果不能关闭,就把所需的端口进行开放
systemctl status firewalld
#2:开放指定端口(因为22一般被sshd服务占据,所以这里用222端口)
firewall-cmd --zone=dmz --add-port=8087/tcp --permanent
firewall-cmd --zone=dmz --add-port=443/tcp --permanent
firewall-cmd --zone=dmz --add-port=22/tcp --permanent
firewall-cmd --zone=dmz --add-port=222/tcp --permanent
firewall-cmd --reload #刷新
firewall-cmd --zone=dmz --list-ports
#搜索镜像
docker search gitlab

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

等待下载完成。

#2:生成挂载目录
mkdir -p /home/gitlab/etc/gitlab    
mkdir -p /home/gitlab/var/log
mkdir -p /home/gitlab/var/opt
#检查镜像是否拉取成功
docker images

#3:启动容器(用的时候调整下命令,为了便于查看,有换行符)
 docker run -d  
 -p 443:443 -p 8087:80 -p 222:22 
 --name gitlab-dev --restart always --privileged=true  
 -v /home/gitlab/etc/gitlab:/etc/gitlab 
 -v /home/gitlab/var/log:/var/log/gitlab 
 -v /home/gitlab/var/opt:/var/opt/gitlab 
 gitlab/gitlab-ce

主要参数说明:

        -d: 后台启动

        -p 8087:80 : -p端口映射,将容器的80端口映射到宿主机的8087,也就是说当你安装成功后通过IP:8087可以访问gitlab

        --name gitlab 给你的容器命名为gitlab 方便后续操作,毕竟通过容器ID进行操作过于麻烦

        -v /home/mappingdata/gitlab/config:/etc/gitlab 文件映射-将容器内部的/etc/gitlab映射到宿主机的/home/mappingdata/gitlab/config

         最后 gitlab/gitlab-ce 你是根据那个镜像启动的该容器(也就是你上面拉取的gitlab的镜像名)

此时访问对应ip是有界面了,如果网络不可用或者502,就再等个几分钟,此时容器尚未启动完全

 

 

 

调整gitlab配置

1.配置克隆项目时所需

vim /home/gitlab/etc/gitlab/gitlab.rb

# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://ip'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = 'ip'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口

# 重启gitlab容器
 docker restart gitlab-dev
#配置超时设置
gitlab_rails['webhook_timeout'] = 90 
gitlab_rails['git_timeout']=90

2.root所需

如果访问ip 时直接进入界面,这个时候根本不知道root密码,进行如下操作:

查看root的初始密码:

docker exec -it 容器名字或容器ID grep 'Password:' /etc/gitlab/initial_root_password

然后登陆 root用户  再次修改密码即可

 使用root + 刚刚查询到的初始密码 登录

登录后 修改密码,创建新代码仓储。

 

 

可以删除部分 不常用的 组件

1. gitlab几乎占内存50%,需要修改配置文件,进行优化

2. vi gitlab.rb

注意:所有修改需要掉注释,在注释的情况下默认是服务器上的所有线程。

减少数据库缓存

postgresql['shared_buffers'] = "64MB"

减少数据库并发数

postgresql['max_worker_processes'] = 1

减少sidekiq并发数

sidekiq['concurrency'] = 1

减少进程数

unicorn['worker_processes'] = 1

nginx['worker_processes'] = 2

减少超时时间

unicorn['worker_timeout'] = 10

减少数据库缓存

postgresql['shared_buffers'] = "64MB"

将worker内存上限设置小一点

unicorn['worker_memory_limit_min'] = "100 * 1 << 20"
unicorn['worker_memory_limit_max'] = "220 * 1 << 20"
禁用prometheus

prometheus_monitoring['enable'] = false

3. 修改生效

gitlab-ctl reconfigure

gitlab-ctl restart

docker生效方式:

重载配置:docker exec -it gitlab gitlab-ctl reconfigure

重启:docker exec -it gitlab gitlab-ctl restart

查看内存:docker stats

也可以直接停止  docker stop xxx  ,   启动 docker start xxx 重启容器

4.查看docker进程使用内存

docker stats 按住Ctrl C 即可退出展示 

--all , -a :显示所有的容器,包括未运行的。

--format :指定返回值的模板文件。

--no-stream :展示当前状态就直接退出了,不再实时更新。

--no-trunc :不截断输出。
5.gitlab操作常用命令
# 查看 gitlab 帮助信息
gitlab-ctl help
# 查看 gitlab 配置信息
gitlab-ctl show-config
# 查看 gitlab 状态
gitlab-ctl status
# 停止 gitlab 所有组件
gitlab-ctl stop
# 查看 postgresql 日志
gitlab-ctl tail postgresql

 安装gitlab 最少8G 内存 因为 直接吃 4个G 进去 

 

posted @ 2022-12-14 10:34  流氓大菠萝  阅读(158)  评论(0编辑  收藏  举报