当前位置: 首页 > 面试题库 >

带有外部nginx和omnibus的gitlab docker注册表

井翰
2023-03-14
问题内容

我已经在一个docker容器中运行了一个gitlab服务器,并在另一个docker容器中运行了一个外部nginx服务器,因此gitlab
nginx服务器被停用了。现在我想使用gitlab服务器中包含的docker注册表。

我尝试从管理手册中获取信息:https
:
//docs.gitlab.com/ee/administration/container_registry.html

并从链接文件中使用适合的Nginx配置:https : //gitlab.com/gitlab-
org/gitlab-ce/blob/master/lib/support/nginx/registry-
ssl

我添加到gitlab.rb:

... 
registry_external_url 'url'
registry_nginx['enable'] = false
registry['enable'] = true
...

但是,如果我尝试登录(docker登录网址),只会收到502 Bad
Gateway错误。我还尝试了其他带有ombination的配置,但总是遇到相同的错误。有人能奏效吗?是否需要我向omnibus文件添加更多设置,还是仍然无法将gitlab内部docker注册表与omnibus和外部nginx结合使用?


问题答案:

好吧,我知道了。

## Lines starting with two hashes (##) are comments with information.
## Lines starting with one hash (#) are configuration parameters that can be uncommented.
##
###################################
##         configuration         ##
###################################

upstream docker-registry {
 server <ip_of_gitlab_docker_container>:<port_of_gitlab_container>;
}

## Redirects all HTTP traffic to the HTTPS host
server {
  listen *:80;
  server_name  sub.domain.tld;
  server_tokens off; ## Don't show the nginx version number, a security best practice
  return 301 https://$http_host:$request_uri;
  access_log  /var/log/nginx/gitlab_registry_access.log;
  error_log   /var/log/nginx/gitlab_registry_error.log;
}


server {
  # If a different port is specified in https://gitlab.com/gitlab-org/gitlab-ce/blob/8-8-stable/config/gitlab.yml.example#L182,
  # it should be declared here as well
  listen *:443 ssl http2;
  server_name  sub.domain.tld;
  server_tokens off; ## Don't show the nginx version number, a security best practice

  client_max_body_size 0;
  chunked_transfer_encoding on;

  ## Strong SSL Security
  ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/
   ssl on;
   ssl_certificate /etc/letsencrypt/live/sub.domain.tld/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/sub.domain.tld/privkey.pem;

  ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
  ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache  builtin:1000  shared:SSL:10m;
  ssl_session_timeout  5m;

  access_log  /var/log/nginx/gitlab_registry_access.log;
  error_log   /var/log/nginx/gitlab_registry_error.log;


    location /
{
     # let Nginx know about our auth file
     proxy_pass http://docker-registry;
     proxy_set_header Host $host; # required for docker client's sake
     proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
 }

 location /v2/ {
     # To add basic authentication to v2 use auth_basic setting plus
     # add_header
     add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;
     proxy_pass http://docker-registry;
     proxy_set_header Host $http_host; # required for docker client's sake
     proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_read_timeout 900;
 }

}

也许Andrioshe的nginx配置也可以使用,但是我进行了一些更改并在尝试时将其与其他配置混在一起。我认为普通docker-
regsitry的配置文件也可以工作…将来会尝试使用。

但是更重要的是gitlab omnibus配置。

registry_external_url 'https://sub.domain.tld'
registry['registry_http_addr'] = "<ip_of_gitlab_docker_container>:<port_of_gitlab_container>"
registry_nginx['enable'] = false
registry['enable'] = true

将’regsitry_http_addr’设置为gitlab Docker注册表IP和端口而不是localhost非常重要。



 类似资料:
  • 我制作了一个JHipster应用程序,我想添加一个带有私有Gitlab runner的CI/CD,以便部署在私有Docker注册表上。我得到了这样的失败: 这是我演讲的相关部分。gitlab ci。yml 编辑:有一个未配置的变量。现在我得到了 如何告诉运行程序接受不安全的(明文)连接?

  • 我们曾经有一个包含EJB jar和WAR的EAR。我们从EJB向战争发送了一个dto类。一切都很好。 现在我们已经尝试从EAR中提取WAR,并创建了WAR使用的EJB-client(API jar)。这个API jar包括我们从EJB发送到WAR的dto类。在EAR中,API部署在lib目录中。 在WAR中,我们在WEB-INF/lib目录中有相同的API jar。 但现在我们在访问dto类的内部

  • 问题内容: 我创建了两个Docker容器。第一个提供专用的Docker注册表,第二个提供官方Docker注册表的镜像: 现在,我想将两者结合起来。每当用户 提取 图像时,都应首先查询私有注册表,然后查询镜像。当图像被 推送时, 它们仅应被推送到私有注册表。 我不知道如何做到这一点。任何帮助表示赞赏。 问题答案: 您不能仅仅强制所有 docker push 命令推送到您的私有注册表。原因之一是您可以

  • 我从AWS控制台创建了一个EC2实例,通过安全组选项打开HTTP端口(例如8080) 我创建了一个新的负载均衡器,使用HTTPS将其连接到实例的HTTP端口。 我使用此配置创建了文件(我使用verdaccio作为npm私有注册表,使用registry:2作为docker注册表: 现在,注册表运行良好。因此,如果访问,我就可以看到它,并且可以通过将npm包推送到它 然而,关于docker注册表,虽然

  • 我正在使用Laravel 5.2 Auth系统生成以下命令: 尽管这一切都很好,但我的目标是使用外部API来执行登录、注册和更改密码,同时仍然能够使用Auth类的核心功能。 以登录为例,我想使用类似于 顺便说一下,我想将$login中的字段传递给Auth类,就像我们可以实际执行Auth::user()一样- 我在互联网上看了看,发现了AuthController内部可以做的事情,以及与服务提供商相

  • 问题内容: 我有许多带有JAXB批注的实体,我想使用消息转换器将其转换为JSON。 我知道读取JAXB批注的ObjectMapper可以工作: 但是当我打电话给我的休息服务时,默认注册的MappingJacksonHttpMessageConverter(未配置为读取JAXB)似乎接管了- 由于@XmlTransient被忽略时由于循环引用而导致堆栈溢出… 如何配置Spring以使用Mapping