如何在 docker 上的相对 URL 下使用 GitLab?

如何在 docker 上的相对 URL 下使用 GitLab?

我在 docker 上使用 gitlab-ce。这些是我的系统规格。

  • GitLab 的一个容器是 gitlab/gitlab-ce。
  • Web 前端正在使用外部 NGINX。
  • GitLab 安装在/git 下。

我读了gitlab 文档中关于配置相对 URL 的内容,但它没有按预期工作。我的预期行为是我http:localhost/git/以 GitLab 的根身份访问。但 NGINX 或 GiLab 重定向/user/_login而不是/git/user/_login

我的所有配置都可以在以下 git 项目中找到:https://github.com/elda27/test-gitlab

这是我构建 GitLab 的 Dockerfile。所有配置都存储了上述 URL。

FROM gitlab/gitlab-ce

WORKDIR /var/opt/gitlab/
RUN mkdir -p ./gitlab-rails/etc/ && chown git:git ./gitlab-rails/etc/
RUN mkdir -p ./gitlab-shell && chown git:git ./gitlab-shell

ADD --chown=root:root gitlab.rb /etc/gitlab/gitlab.rb
ADD --chown=root:root relative_url.rb /var/opt/gitlab/gitlab-rails/etc/relative_url.rb
ADD --chown=root:root puma.rb /var/opt/gitlab/gitlab-rails/etc/puma.yml
ADD --chown=root:git gitlab.yml /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
ADD --chown=root:git config.yml /var/opt/gitlab/gitlab-shell/config.yml

WORKDIR /

请告知配置更改。

答案1

我参考以下文档解决了问题: https://docs.gitlab.com/omnibus/settings/configuration.html

我需要external_url在 中设置并禁用内部 NGINX /etc/gitlab/gitlab.rb

# See: https://docs.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server
external_url "http://localhost/git"

# NGINX config
nginx['enable'] = false
web_server['external_users'] = ['nginx']
web_server['username'] = 'nginx'
# web_server['group'] = 101

# rails config
gitlab_rails['trusted_proxies'] = ['172.17.0.0/16']

# HTTPS config
nginx['redirect_http_to_https'] = false
registry_nginx['redirect_http_to_https'] = false
mattermost_nginx['redirect_http_to_https'] = false

letsencrypt['enable'] = false

外部NGINX的配置如下。

upstream gitlab {
  # Unix socket for Gitlabs
  server unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket;
}

server {
  listen 0.0.0.0:80 default_server;
  listen [::]:80;

  server_tokens off; # Disable the nginx server version

  location ^~ /git/ {
    client_max_body_size 0;
    gzip off;

    # https://github.com/gitlabhq/gitlabhq/issues/694
    # Some requests take more than 30 seconds.
    proxy_read_timeout      300;
    proxy_connect_timeout   300;
    proxy_redirect          off;

    proxy_http_version 1.1;

    proxy_set_header Host              $http_host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # rewrite ^/git/(.*)$ /$1 break;
    # proxy_pass http://gitlab:8080;
    proxy_pass http://gitlab;
  }
  location / {
    root /opt/app;
    index index.html index.html;
  }
}

我搞错了源安装和 Omnibus GitLab 之间的区别。它们的配置是单独记录的,但我不知道。所有配置都写/etc/gitlab/gitlab.rb在 docker 容器中的 Omnibus GitLab 上。

相关内容