docker安装gitlab

下面是 GitLab 17.11(CE 版) 的完整 Docker 安装步骤,适用于 Linux 系统(包括 ARM64 架构)。将包含 启动命令、端口映射、数据卷挂载、外部访问配置等完整说明


一、前提条件

  • 安装好 Docker(推荐版本 ≥ 20.10)

  • 可用磁盘空间 ≥ 10GB(建议 30GB+)

  • 主机名解析正确(推荐设置 hosts 或 DNS)

  • 系统架构支持 ARM64 或 x86_64


二、拉取镜像

这个镜像有时由于众所周知的原因无法pull,可以采用一个迂回的方案。

1、在可以访问到registry-1.docker.io/v2/仓库的机器上,先pull下来

docker pull gitlab/gitlab-ce:17.11.1-ce.0

2、在本给tag打标签

docker tag gitlab/gitlab-ce:17.11.1-ce.0 private-ser-240.local:5001/talman/gitlab/gitlab-ce:17.11.1-ce.0

3、登录doce,push镜像

docker login -u admin private-ser-240.local:5001

docker push private-ser-240.local:5001/talman/gitlab/gitlab-ce:17.11.1-ce.0
The push refers to repository [private-ser-240.local:5001/talman/gitlab/gitlab-ce]
8003a5b55e49: Pushed 
272aaa3e7500: Pushed 
08bae8e67056: Pushed 
93d70cedc33c: Pushed 
f263caa35a8d: Pushed 
fd8aee88589b: Pushed 
32007e0da359: Pushed 
e38045bbc8b4: Pushed 
65c636ce09f2: Pushed 
17.11.1-ce.0: digest: sha256:61b3d9b3721d1020474c5a3bada39964671bc0007bf592a2d490356170ccb94d size: 2201

4、在nexus上查看镜像

此镜像为官方 社区版(CE),支持多架构自动适配(如 ARM64)。

三、关于如何使用nexus构建docker私服

请参见:文档创建中

四、启动命令(推荐使用端口号 + 主机名方式)

sudo docker run --detach \
  --hostname private-ser-240.local \
  --publish 7443:443 \
  --publish 7080:80 \
  --publish 2222:22 \
  --name gitlab \
  --restart always \
  --volume $HOME/gitlab/config:/etc/gitlab \
  --volume $HOME/gitlab/logs:/var/log/gitlab \
  --volume $HOME/gitlab/data:/var/opt/gitlab \
  talman/gitlab/gitlab-ce:17.11.1-ce.0

参数说明:

参数说明
--hostnameGitLab 服务的主机名(用于生成 clone URL / 登录地址等)
--publish宿主机端口与容器端口映射
--volume数据持久化路径,分别保存配置、日志、数据
--restart always开机自启动 GitLab 容器
--name gitlab容器名,方便管理

五、数据目录结构说明(宿主机)

目录作用
$HOME/gitlab/config配置文件,如 gitlab.rb
$HOME/gitlab/logs应用日志
$HOME/gitlab/data仓库数据、数据库、Redis 等

六、访问地址

根据前面的端口映射,你可以通过以下方式访问 GitLab:

  • HTTP: http://<你的主机 IP[或主机名]>:7080

  • HTTPS: https://<你的主机 IP[或主机名]>:7443

  • SSH Git: git@<你的主机 IP[或主机名]> -p 2222

如果你配置了主机名如 [或主机名],建议添加本地解析:

sudo echo "192.168.x.x private-ser-240.local" >> /etc/hosts

七、初始化配置

首次访问 GitLab,会提示设置管理员密码:

  1. 访问:http://<IP[或主机名]>:7080

  2. 设置 root 密码

  3. 使用 root + 你设置的密码 登录

  4. 创建项目、用户、组、配置 CI/CD

八、常用管理命令

docker exec -it gitlab gitlab-ctl reconfigure     # 应用配置
docker exec -it gitlab gitlab-ctl restart         # 重启服务
docker exec -it gitlab gitlab-rake gitlab:check   # 检查状态

九、关闭 HTTPS(如你只打算走 HTTP)

编辑 $HOME/gitlab/config/gitlab.rb:

external_url 'http://private-ser-240.local:7080'
nginx['redirect_http_to_https'] = false

然后执行:

docker exec -it gitlab gitlab-ctl reconfigure

十、GitLab 17.11 中常见配置项含义(写在gitlab.rb文件中)

10.1 external_url

  • 作用:定义 GitLab 对外暴露的 URL,包括页面跳转、克隆地址、邮件链接等;

  • 必须配置

  • 适用于 HTTP/HTTPS;

  • Docker 启动时也可以用环境变量指定:GITLAB_OMNIBUS_CONFIG="external_url='...'"

  • 示例:

external_url 'http://192.168.3.240:7080'

10.2 nginx['redirect_http_to_https']

作用:

  • 是否强制将 HTTP 请求重定向到 HTTPS;

  • 如果你只是测试用,没配置 HTTPS(SSL 证书),应设为 false;

  • 如果你使用了 Let’s Encrypt 或自签名证书,并启用了 HTTPS,可以设为 true。

nginx['redirect_http_to_https'] = false

10.3 gitlab_rails['gitlab_shell_ssh_port']

gitlab_rails['gitlab_shell_ssh_port'] = 2222

作用:

  • 如果你映射了非 22 的 SSH 端口(如 --publish 2222:22),则必须告诉 GitLab 使用哪个端口;

  • 否则 GitLab 会误以为 SSH Git clone 使用的是默认端口 22。

10.4 puma['worker_processes'] = 2

  • 作用:设置 GitLab Web 服务(Puma)使用的进程数量;

  • 这些配置在旧版(如 15.x)中用于控制 GitLab Web 服务监听端口;

  • 17.11 起默认由 Puma 处理,但一般不需要手动改 unless 多实例场景。

  • 影响请求并发处理能力;

  • 默认是 0(表示自动判断);

  • 如果服务器有 ≥ 2 核 CPU,设置为 2 是合理的

  • 注意不要设置太高,否则内存/线程竞争。

10.5 gitlab_rails['time_zone'] = 'Asia/Shanghai'

  • 作用:设置 GitLab Web 界面显示时间的时区;

  • 默认是 UTC,设置为 Asia/Shanghai 可显示北京时间;

  • 推荐设置,尤其是国内部署。

10.6 sidekiq['max_concurrency'] = 16

  • 作用:控制后台任务处理进程 Sidekiq 的并发线程数;

  • Sidekiq 处理如邮件、CI/CD 执行、项目导入、缓存清理等任务;

  • 默认值通常为 25;

  • 设置为 8 意味着最多并发 8 个任务线程,适合资源有限的环境;

  • 可根据服务器内存和 CPU 增减,推荐范围:4 ~ 20

10.7 postgresql['shared_buffers'] = "512MB"

  • 作用:PostgreSQL 内存中用于缓存数据页的缓冲区大小;

  • 默认约为系统内存的 25%;

  • 128MB 适合 1~2GB 内存的小型服务器;

  • 如服务器内存 ≥ 4GB,建议设为 512MB ~ 1GB

10.8 postgresql['max_worker_processes'] = 8

  • 作用:PostgreSQL 可用于并行查询和后台任务的最大工作进程数量;

  • 默认值:8;

  • 你设置为 4,适合中小型实例,避免资源过度使用;

  • 对 CI/CD 中执行 SQL 查询等会有轻微影响。

10.9 prometheus_monitoring['enable'] = false

  • 作用:是否启用 GitLab 自带的 Prometheus 监控服务;

  • 默认是启用的;

  • 如果你不打算使用 GitLab 监控功能(包括性能图、度量指标等),可以关闭以节省资源;

  • 推荐在资源紧张时关闭。

10.10 sidekiq['concurrency'] = 8

  • 含义:最多同时处理 8 个后台任务;

  • 默认值是 25;

  • 在资源有限的服务器(如 ARM 主机、低配 VPS)上推荐调低;

  • 设置为 8 是比较温和的选择,兼顾并发与资源占用;

  • 如果你服务器内存 < 4GB,建议设为 4 或更小。

配置建议总结(是否建议保留)

配置项GitLab 17.11 是否仍适用建议情况
external_url✅ 必须必须配置
gitlab_rails['time_zone']✅ 有效✅ 强烈建议设置
puma['worker_processes']✅ 有效✅ 可调节性能
sidekiq['max_concurrency']✅ 有效✅ 可根据资源调节
postgresql['shared_buffers']✅ 有效✅ 建议自定义
postgresql['max_worker_processes']✅ 有效✅ 建议保守设定
prometheus_monitoring['enable']✅ 有效✅ 可关闭节省资源

示例配置片段(适用于 GitLab 17.11)

external_url 'http://private-ser-240.local'

gitlab_rails['time_zone'] = 'Asia/Shanghai'

puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 16

postgresql['shared_buffers'] = "512MB"
postgresql['max_worker_processes'] = 8
sidekiq['concurrency'] = 8
prometheus_monitoring['enable'] = false

十一 让修改后的配置生效

docker exec -it gitlab gitlab-ctl reconfigure

十二 root账户以及密码

gitlab会自动创建一个管理员账户,root

密码在:cat /root/gitlab/config/initial_root_password

十三 基础设置

重置密码

登录后修改默认密码 > 左上角头像 > Perferences > Password

取消头像外部加载

修改系统配置:首页正中心,Configure GitLab Settings > General > Account and limit > 取消 Gravatar enabled > Save changes

关闭用户注册功能

首页正中心,Configure GitLab

Settings > General > Sign-up restrictions > 取消 Sign-up enabled > Save changes

开启 webhook 外部访问

首页正中心,Configure GitLab Settings > Network > Outbound requests > Allow requests to the local network from web hooks and services 勾选

设置语言为中文(全局)

首页正中心,Configure GitLab Settings > Preferences > Localization > Default language > 选择简体中文 > Save changes

设置当前用户语言为中文

左上角用户头像 > Preferences > Localization > Language > 选择简体中文 > Save changes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值