Docker 部署 GitLab

Docker 搭建 GitLab

安装 GitLab

拉取镜像

docker pull gitlab/gitlab-ce

这是 Gitlab 社区版的镜像,开源免费。

查看下载好的镜像:

docker images

image-20231119161354119

新建数据卷目录

如果要修改一个容器的配置或者查看它的日志,需要进入到容器里面,不是很方便。所以通常会给容器挂载数据卷,将容器内的重要目录,映射到宿主机中。创建这些卷可以确保即使容器被删除,数据和配置也不会丢失。

mkdir -p /usr/local/software/gitlab/config
mkdir -p /usr/local/software/gitlab/logs
mkdir -p /usr/local/software/gitlab/data

运行容器

如果没有域名服务,把yang-gitlab.com改成虚拟机ip即可

docker run -it \
--hostname yang-gitlab.com \
--name gitlab \
-p 443:443 -p 80:80 -p 23:22 \
--network yang_docker_net \
--ip 172.18.12.50 \
-v /usr/local/software/gitlab/config:/etc/gitlab \
-v /usr/local/software/gitlab/logs:/var/log/gitlab \
-v /usr/local/software/gitlab/data:/var/opt/gitlab \
-d gitlab/gitlab-ce

GitLab 配置

设置用户名密码

# 第一次访问,会让修改root密码
# 修改后以root用户登录即可

Docker 部署 GitLab_第1张图片

# 进入容器内部
docker exec -it gitlab bash
 
# 进入控制台
gitlab-rails console

# root
user=User.find_by_username 'root'
# 修改密码
user.password='12345678'
# 保存
user.save!

Docker 部署 GitLab_第2张图片

然后使用用户名root,密码12345678即可登录。

汉化

Preferences => Localization

Docker 部署 GitLab_第3张图片

Docker 部署 GitLab_第4张图片

点击保存之后刷新页面即可生效。

关闭自动注册

Menu => Admin => Seetings => General => Sign-up restrictions

Docker 部署 GitLab_第5张图片

Docker 部署 GitLab_第6张图片

Docker 部署 GitLab_第7张图片

取消勾选后保存即可生效。

创建用户

Menu => Admin => Overview => Users => New User

Docker 部署 GitLab_第8张图片

Docker 部署 GitLab_第9张图片

Docker 部署 GitLab_第10张图片

Docker 部署 GitLab_第11张图片

填完必填选项点击 Create user 即可注册用户

设置用户密码

Docker 部署 GitLab_第12张图片

Docker 部署 GitLab_第13张图片

设置完成密码后点击保存,即可生效。

GitLab 使用

登录

Docker 部署 GitLab_第14张图片

首次登录会提示修改密码,回到跳转页面重新登录。

搭建模板项目

Docker 部署 GitLab_第15张图片

Docker 部署 GitLab_第16张图片

Docker 部署 GitLab_第17张图片

Docker 部署 GitLab_第18张图片

Docker 部署 GitLab_第19张图片

然后就可以使用链接下载项目。

如果没有域名服务且使用了域名,需进行一下操作:

# 进入容器
docker exec -it gitlab bash
# 修改配置文件
vi /etc/gitlab/gitlab.rb

找到external_url改成external_url 'http://ip地址'

然后在容器中输入gitlab-ctl reconfigure使配置生效

内存占用优化

使用docker stats gitlab查看内存占用

image-20231119194005843

修改配置文件

# 进入容器
docker exec -it gitlab bash
# 修改配置文件
vi /etc/gitlab/gitlab.rb

调整 MALLOC_CONF

找到gitlab_rails['env']修改:

gitlab_rails['env'] = {
	'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
#    "SKIP" => "db,uploads,repositories,builds,artifacts,lfs,registry,pages"
}

MALLOC_CONF:
这个环境变量是为 jemalloc 分配器设置的,jemalloc 是 GitLab 使用的内存分配器。jemalloc 有助于优化内存使用,防止内存碎片化。

  • dirty_decay_ms:1000: 设置脏页(即已修改过的内存页,需要写回内存的页)的衰减时间。这里设置为 1000 毫秒,意味着 jemalloc 将在内存页变脏后 1 秒尝试回收这些页。
  • muzzy_decay_ms:1000: 设置模糊页(即已经不再使用,但还没有完全清理的内存页)的衰减时间。同样地,这里设置为 1000 毫秒。

这些设置可以影响内存的回收策略,可能有助于改善内存使用效率和减少内存占用。

禁用 puma cluster 模式

Puma 的设置是用来配置 GitLab 内置的 Puma Web 服务器,这个服务器负责处理 GitLab 的 Web 请求

找到puma['worker_timeout'] puma['worker_processes']

puma['worker_timeout'] = 60
puma['worker_processes'] = 0

puma['worker_timeout'] = 60:
这个配置项设置了 Puma 工作进程在认定为超时之前可以花费的最长秒数。如果一个请求在指定的时间内没有完成,Puma 会认为该工作进程已经卡住,并可能会重启该进程。在这个例子中,worker_timeout 被设置为 60 秒,这意味着如果一个工作进程在 60 秒内没有响应请求,Puma 将会认为它已经超时。

puma['worker_processes'] = 2:
这个配置项指定了 Puma 应该启动的工作进程数。工作进程是独立的操作系统进程,每个进程都可以并行处理 Web 请求。设置多个工作进程可以提高并发处理能力,因为它们可以同时处理多个 Web 请求。在这个例子中,Puma 被配置为启动 2 个工作进程。

调整 sidekiq

找到 sidekiq['max_concurrency']修改:

sidekiq['max_concurrency'] = 10

sidekiq['max_concurrency'] = 10 的设定意味着 Sidekiq 被允许同时执行的线程数上限是 10。这就是说,Sidekiq 可以同时处理最多 10 个作业。

重启容器

在容器中输入gitlab-ctl reconfigure使配置生效

然后重启容器gitlab-ctl restart

查看内存占用

docker stats gitlab

image-20231119200733939

可以看到内存占用下降了很多,至此内存占用优化完成。

你可能感兴趣的:(docker,gitlab,容器)