首页 > 解决方案 > Gitlab-ce 和注册表 [docker-compose]

问题描述

我正在尝试通过注册表创建一个 gitlabdocker-compose.yml

我遵循了指南和指南,我尝试了很多,但仍然没有成功。

指南

首先生成密钥

sudo mkdir -p certs
sudo openssl req \
  -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
  -x509 -days 365 -out certs/domain.crt
(note CN must be same as hostname)

然后创建docker-compose.yaml并运行sudo docker-compose up

version: '3'

services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'example.customsite.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://example.customsite.com/'
        registry_external_url 'https://example.customsite.com:4443'
        #gitlab_rails['registry_api_url'] = "https://example.customsite.com:4443"

        registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/example.customsite.com.crt"
        registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/example.customsite.com.key"

        gitlab_rails['lfs_enabled'] = true;
        gitlab_rails['registry_path'] = "/etc/registry"

        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '8080:80'
      - '443:443'
      - '2222:22'
    volumes:
      - ./certs:/etc/gitlab/ssl/
      - ./srv/gitlab/config:/etc/gitlab
      - ./srv/gitlab/logs:/var/log/gitlab
      - ./srv/gitlab/data:/var/opt/gitlab
      - ./registry:/etc/registry


  registry:
    image: registry:2
    restart: always
    environment:
      REGISTRY_HTTP_ADDR: 0.0.0.0:443
      REGISTRY_HTTP_TLS_CERTIFICATE: '/certs/example.customsite.com.crt'
      REGISTRY_HTTP_TLS_KEY: '/certs/example.customsite.com.key'
      STORAGE_PATH: '/registry'
    ports:
      - 443:443
    volumes:
      - './certs:/certs'
      - './registry:/registry'

问题

所以我可以使用注册表(推/拉),检查 url https://example.customsite.com:4443/v2/_catalog图像是否存在,但 gitlab 站点上的存储库中没有。

但是如果我输入 gitlab_rails['registry_api_url'] = "https://example.customsite.com:4443" docker gitlab environment-compose,当我尝试从存储库和日志中访问注册表时,我会收到错误代码 500

gitlab_1    | Started GET "/root/test/container_registry" for *.*.*.* at 2018-12-12 13:37:40 +0000
gitlab_1    | Processing by Projects::Registry::RepositoriesController#index as HTML
gitlab_1    |   Parameters: {"namespace_id"=>"root", "project_id"=>"test"}
gitlab_1    | Completed 500 Internal Server Error in 288ms (ActiveRecord: 5.5ms)
gitlab_1    |
gitlab_1    | Faraday::ConnectionFailed (Failed to open TCP connection to registry:4443 (Connection refused - connect(2) for "registry" port 4443)):
gitlab_1    |   lib/container_registry/client.rb:21:in `repository_tags'
gitlab_1    |   app/models/container_repository.rb:38:in `manifest'
gitlab_1    |   app/models/container_repository.rb:43:in `tags'
gitlab_1    |   app/models/container_repository.rb:55:in `has_tags?'
gitlab_1    |   lib/gitlab/metrics/instrumentation.rb:159:in `block in has_tags?'
gitlab_1    |   lib/gitlab/metrics/method_call.rb:34:in `measure'
gitlab_1    |   lib/gitlab/metrics/instrumentation.rb:159:in `has_tags?'
gitlab_1    |   app/controllers/projects/registry/repositories_controller.rb:46:in `block (2 levels) in ensure_root_container_repository!'
gitlab_1    |   app/controllers/projects/registry/repositories_controller.rb:45:in `tap'
gitlab_1    |   app/controllers/projects/registry/repositories_controller.rb:45:in `block in ensure_root_container_repository!'
gitlab_1    |   app/controllers/projects/registry/repositories_controller.rb:42:in `tap'
gitlab_1    |   app/controllers/projects/registry/repositories_controller.rb:42:in `ensure_root_container_repository!'
gitlab_1    |   lib/gitlab/i18n.rb:55:in `with_locale'
gitlab_1    |   lib/gitlab/i18n.rb:61:in `with_user_locale'
gitlab_1    |   app/controllers/application_controller.rb:419:in `set_locale'
gitlab_1    |   lib/gitlab/middleware/multipart.rb:101:in `call'
gitlab_1    |   lib/gitlab/request_profiler/middleware.rb:14:in `call'
gitlab_1    |   lib/gitlab/middleware/go.rb:17:in `call'
gitlab_1    |   lib/gitlab/etag_caching/middleware.rb:11:in `call'
gitlab_1    |   lib/gitlab/middleware/rails_queue_duration.rb:22:in `call'
gitlab_1    |   lib/gitlab/metrics/rack_middleware.rb:15:in `block in call'
gitlab_1    |   lib/gitlab/metrics/transaction.rb:53:in `run'
gitlab_1    |   lib/gitlab/metrics/rack_middleware.rb:15:in `call'
gitlab_1    |   lib/gitlab/middleware/read_only/controller.rb:38:in `call'
gitlab_1    |   lib/gitlab/middleware/read_only.rb:16:in `call'
gitlab_1    |   lib/gitlab/middleware/basic_health_check.rb:25:in `call'
gitlab_1    |   lib/gitlab/request_context.rb:20:in `call'
gitlab_1    |   lib/gitlab/metrics/requests_rack_middleware.rb:27:in `call'
gitlab_1    |   lib/gitlab/middleware/release_env.rb:10:in `call'

我也试过 https://gitlab.com/gitlab-org/gitlab-ce/issues/32990

标签: dockerdocker-composegitlabregistry

解决方案


推荐阅读