You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署GitLab生成带容器ID的错误URL 无法访问克隆仓库

故障现象

CentOS7服务器上通过Docker+Portainer部署自建GitLab,创建用户后基础功能可正常访问,但点击用户主页时报错,异常页面如下:
报错页面截图
排查发现系统自动生成的用户主页地址为http://0de09c2e3bc1/Parisa_hr,其中0de09c2e3bc1为异常随机字段。
仓库克隆地址存在相同问题:

  • SSH克隆地址:git@0de09c2e3bc1:groupname/projectname.git
  • HTTP克隆地址:http://0de09c2e3bc1/groupname/projectname.git
    执行克隆时抛出错误:

ssh: Could not resolve hostname 0de09c2e3bc1: Temporary failure in name resolution fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

经确认0de09c2e3bc1是Docker自动生成的GitLab容器主机名(进入容器控制台可见提示符为root@0de09c2e3bc1:/#),手动修改GitLab配置项external_url为服务器https://IP:port格式地址后问题未解决。

故障原因

地址中出现容器ID的核心原因是GitLab未正确读取到对外服务的访问地址配置,回退使用了容器自身的hostname作为访问域名。单纯修改external_url不生效,通常是配置修改后未执行重载、参数配置错误,或容器启动时未做固定主机名、持久化配置导致的。

修复步骤

1. 修正GitLab核心配置

找到GitLab的主配置文件gitlab.rb,如果是容器部署,优先修改你挂载到宿主机的配置文件,避免容器重建后配置丢失;如果未做挂载,可以先进入容器编辑/etc/gitlab/gitlab.rb,确保以下参数配置正确,替换为你实际的服务器IP和端口:

# 配置对外HTTP/HTTPS访问地址,协议、IP、端口必须和你实际访问的地址完全一致
external_url 'http://你的服务器IP:映射的HTTP访问端口'
# 单独配置SSH克隆地址的主机和端口,避免自动读取容器hostname
gitlab_rails['gitlab_ssh_host'] = '你的服务器IP'
gitlab_rails['gitlab_shell_ssh_port'] = 映射的SSH访问端口

注意:如果你的SSH端口不是默认22,必须显式配置gitlab_shell_ssh_port参数,否则生成的SSH克隆地址不会带端口,会导致克隆失败

2. 重载配置让参数生效

修改完配置文件后,进入GitLab容器控制台执行以下命令重载配置,不要直接重启容器:

# 重新编译应用GitLab配置,执行过程需要3-10分钟,不要中断
gitlab-ctl reconfigure
# 配置重载完成后重启所有GitLab服务
gitlab-ctl restart

3. 修正Portainer中容器的启动配置(避免重启后失效)

回到Portainer的容器管理页面,找到GitLab容器进入编辑模式,调整以下配置:

  • 在高级容器设置的「主机名」选项中,直接填写你的服务器IP或绑定的域名,禁止留空——留空时Docker会自动生成12位容器ID作为主机名,会被GitLab读取为默认访问地址
  • 核对端口映射规则,必须和你gitlab.rb中配置的端口完全对应:
    • 容器内部80端口,映射到你external_url中填写的HTTP端口
    • 容器内部22端口,映射到你gitlab_shell_ssh_port中填写的SSH端口
    • 如果启用HTTPS,容器内部443端口映射到你配置的HTTPS端口
  • 确认GitLab的配置、数据、日志目录都做了宿主机持久化挂载,避免容器重建时配置被重置
    调整完成后保存配置,重启GitLab容器。

4. 验证修复效果

容器重启后等待5分钟左右,待所有GitLab服务进程完全启动后,清除浏览器缓存重新登录:

  • 点击用户主页,确认地址栏显示为你配置的服务器IP/域名,不再出现容器ID
  • 打开任意仓库页面,查看HTTP/SSH克隆地址,确认地址中的IP、端口配置正确,执行克隆操作验证功能正常
常见避坑提示
  • 不要只在容器控制台内修改配置,如果没有做配置文件持久化挂载,容器重建后所有修改都会丢失
  • external_url末尾不要加多余的斜杠,端口必须和Docker映射的宿主机端口保持一致,否则会出现跳转异常
  • 如果重载配置后页面仍显示旧地址,优先清除浏览器缓存、或者换无痕模式访问,GitLab前端有较强的静态资源缓存

内容的提问来源于stack exchange,提问作者Parisa.H.R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:24:25