GitLab Omnibus Docker 引导循环(以前工作)修复?

GitLab Omnibus Docker boot-loop (previously working) fix?

因此,在最终设置好 GitLab 并使用它一天之后,我决定尝试启用 GitLab 注册表。然而,在 运行 gitlab-ctl reconfigure 之后,系统进入了一个引导循环(每次引导持续 10-15 秒)。

现在我一直在到处寻找解决这个问题的方法,结束引导循环或获取详细说明容器 keeps 重启原因的日志。

我是 运行 Digital Ocean droplet VPS 上 GitLab(最新版本)的 Omnibus Docker 图像。 GitLab 配置为不使用 https,因为我使用反向代理 (apache) 进行连接(此连接通过 https)。

反向代理配置 浏览器 => example.com:443 (https) => localhost:8888 (http)

Docker ps 输出

c13e26a20f7d        gitlab/gitlab-ce:latest       "/assets/wrapper"        24 hours ago        Up 2 seconds (health: starting)   0.0.0.0:2222->22/tcp, 0.0.0.0:8888->80/tcp, 0.0.0.0:4444->443/tcp   gitlab

我尝试过的(没有成功):

任何建议and/or 我将如何解决这个问题将不胜感激!

修复:关闭Docker容器,检查重新配置日志(位于logs/reconfiguration安装文件夹中的目录)并根据日志中明显的错误对配置文件进行调整。

修复引导循环(逐步)

注意:如果你不是运行 root,我建议暂时运行 root(使用sudo su) 以避免权限被拒绝错误。

手动停止 Docker 容器后,我能够查看位于 /srv/gitlab/logs/reconfigure 的完整日志(具有最新时间戳)

摘自最新的重新配置日志:

[2018-05-19T00:24:50+00:00] INFO: *** Chef 13.6.4 ***
[2018-05-19T00:24:50+00:00] INFO: Platform: x86_64-linux
[2018-05-19T00:24:50+00:00] INFO: Chef-client pid: 25
[2018-05-19T00:24:50+00:00] INFO: The plugin path /etc/chef/ohai/plugins does not exist. Skipping...
[2018-05-19T00:24:52+00:00] WARN: Plugin Network: unable to detect ipaddress
[2018-05-19T00:24:52+00:00] INFO: Setting the run_list to ["recipe[gitlab]"] from CLI options
[2018-05-19T00:24:52+00:00] INFO: Run List is [recipe[gitlab]]
[2018-05-19T00:24:52+00:00] INFO: Run List expands to [gitlab]
[2018-05-19T00:24:52+00:00] INFO: Starting Chef Run for [REDACTED]
[2018-05-19T00:24:52+00:00] INFO: Running start handlers
[2018-05-19T00:24:52+00:00] INFO: Start handlers complete.
[2018-05-19T00:24:54+00:00] INFO: Loading cookbooks [gitlab@0.0.1, package@0.1.0, postgresql@0.1.0, registry@0.1.0, mattermost@0.1.0, consul@0.0.0, gitaly@0.1.0, letsencrypt@0.1.0, nginx@0.1.0, runit@0.14.2, acme@3.1.0, crond@0.1.0, compat_resource@12.19.0]
[2018-05-19T00:24:56+00:00] WARN: Runtime directory '/run' is not a tmpfs.

错误消息是一个好的开始,但不会揭示根本问题...

[2018-05-19T00:24:56+00:00] ERROR: Running exception handlers
[2018-05-19T00:24:56+00:00] ERROR: Exception handlers complete

现在日志的最后 3 行揭示了问题

[2018-05-19T00:24:56+00:00] FATAL: Stacktrace dumped to /opt/gitlab/embedded/cookbooks/cache/chef-stacktrace.out
[2018-05-19T00:24:56+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2018-05-19T00:24:56+00:00] FATAL: RuntimeError: Unsupported GitLab Registry external URL path: /gitlab/registry

现在看到最后一行后,我发现我的配置无效并且是致命问题的原因

为了解决这个问题,我在 docker 容器处于未启动状态时编辑了配置(配置文件位于 /srv/gitlab/config/gitlab.rb)。修复配置后,在我的例子中是注释掉所有 GitLab Registry 配置选项(因为我决定暂时等待测试此功能)。

配置差异

################################################################################
## Container Registry settings
##! Docs: https://docs.gitlab.com/ce/administration/container_registry.html
################################################################################

- registry_external_url 'http://[REDACTED]:4567/gitlab/registry'
+ # registry_external_url 'http://[REDACTED]:4567/gitlab/registry'

### Settings used by GitLab application
- gitlab_rails['registry_enabled'] = true
+ # gitlab_rails['registry_enabled'] = true
- gitlab_rails['registry_host'] = "[REDACTED]"
+ # gitlab_rails['registry_host'] = "[REDACTED]"
- gitlab_rails['registry_port'] = "4567"
+ # gitlab_rails['registry_port'] = "4567"
- gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
+ # gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"

我运行以下命令来启动容器并应用新配置。

docker start gitlab
sudo docker exec gitlab gitlab-ctl reconfigure

结果立竿见影,因为在我发出命令后容器没有立即重新启动。

Starting Chef Client, version 13.6.4
resolving cookbooks for run list: ["gitlab"]
Synchronizing Cookbooks:
  - gitlab (0.0.1)
  - package (0.1.0)
  - registry (0.1.0)
  - postgresql (0.1.0)
  - letsencrypt (0.1.0)
  - mattermost (0.1.0)
  - runit (0.14.2)
  - nginx (0.1.0)
  - gitaly (0.1.0)
  - consul (0.0.0)
  - acme (3.1.0)
  - crond (0.1.0)
  - compat_resource (12.19.0)
Installing Cookbook Gems:
...

就是这样!现在一切正常。原来用户错误是问题的原因。

我遇到了同样的问题。我检查了最新的日志:

sudo ls -l /srv/gitlab/logs/reconfigure/

在 运行ning GitLab

时我在文件中发现了错误
sudo more /srv/gitlab/logs/reconfigure/1648382802.log

文件内容

[2022-03-27T12:08:10+00:00] 信息:文件[/var/opt/gitlab/nginx/www/.well-known/acme-challenge/M1tQ-4PY-MUmYyTdrsvgZTbPg1KGg-j4rjZCkPG0Bqk] 所有者更改为 0 [2022-03-27T12:08:10+00:00] 信息:文件[/var/opt/gitlab/nginx/www/.well-known/acme-challenge/M1tQ-4PY-MUmYyTdrsvgZTbPg1KGg-j4rjZCkPG0Bqk] 组更改为 0 [2022-03-27T12:08:10+00:00] 信息:文件[/var/opt/gitlab/nginx/www/.well-known/acme-challenge/M1tQ-4PY-MUmYyTdrsvgZTbPg1KGg-j4rjZCkPG0Bqk] 模式更改为 644 [2022-03-27T12:08:12+00:00] 信息:文件 [/var/opt/gitlab/nginx/www/.well-known/acme-challenge/M1tQ-4PY-MUmYyTdrsvgZTbPg1KGg-j4rjZCkPG0Bqk] 已删除位于 /var/opt/gitla 的文件 b/nginx/www/.well-known/acme-challenge/M1tQ-4PY-MUmYyTdrsvgZTbPg1KGg-j4rjZCkPG0Bqk [2022-03-27T12:08:12+00:00] 信息:运行 在 re-raising 异常之前排队延迟通知 [2022-03-27T12:08:12+00:00] 信息:运行 在 re-raising 异常之前排队延迟通知 [2022-03-27T12:08:12+00:00] 信息:运行 在 re-raising 异常之前排队延迟通知 [2022-03-27T12:08:12+00:00] 信息:t​​emplatesymlink[创建一个 gitlab.yml 并创建一个指向 Rails root 的符号链接] 发送 运行 要执行的操作[清除gitlab-rails 缓存] ( 延迟) [2022-03-27T12:08:56+00:00] 信息:执行[清除 gitlab-rails 缓存] 运行 成功 [2022-03-27T12:08:56+00:00] 信息:env_dir[/opt/gitlab/etc/gitlab-workhorse/env] 向 runit_service[gitlab-workhorse] 发送重启操作(延迟) [2022-03-27T12:08:56+00:00] 信息:env_dir[/opt/gitlab/etc/registry/env] 向 runit_service[注册表] 发送重启操作(延迟) [2022-03-27T12:08:57+00:00] 错误:运行 异常处理程序 [2022-03-27T12:08:57+00:00] 错误:异常处理程序完成 [2022-03-27T12:08:57+00:00] 致命:Stacktrace 转储到 /opt/gitlab/embedded/cookbooks/cache/chef-stacktrace.out [2022-03-27T12:08:57+00:00] 致命:如果您提交错误报告,请提供 stacktrace.out 文件的内容 [2022-03-27T12:08:57+00:00] FATAL: RuntimeError: letsencrypt_certificate[example.com] (letsencrypt::http_authorization 第 6 行出现错误:RuntimeError: acm e_certificate[staging](/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb 第 41 行)出现错误:RuntimeError: ruby_block[create cert example.com] 的 ificate(/opt/gitlab/embedded/cookbooks/cache/cookbooks/acme/resources/certificate.rb 第 108 行)出现错误:RuntimeError: [gitlab.example.com] Validation failed, unable to request certificate, Errors: [{url: https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/2021548548/xDXgmw, 状态: 无效, e 错误:{“type”=>“urn:ietf:params:acme:error:unauthorized”,“detail”=>“来自 http://gitlab 的无效响应。example.com/。well-known/acme-challenge/M1tQ-4PY-MUmYyTdrsvgZ TbPg1KGg-j4rjZCkPG0Bqk [IP]: 404", "状态"=>403}}]

就我而言,这是 LetsEncrypt 中的错误配置。我更正了 GitLab 配置文件:

sudo vi /srv/gitlab/config/gitlab.rb