GitLab 容器启动后,仓库地址显示为容器 ID(如5095f7e3b533
)而非预期的域名或 IP 地址,这通常是由于 GitLab 配置中external_url
设置不正确导致的。以下是解决方案:
1. 修改 GitLab 配置文件
通过编辑docker-compose.yml
或直接进入容器修改配置:
方法 A:修改 docker-compose.yml(推荐)
yaml
version: '3'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: 'always'
hostname: 'your-server-ip' # 替换为服务器公网IP或域名
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://your-server-ip' # 替换为服务器公网IP或域名
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # SSH端口映射
ports:
- '80:80'
- '443:443'
- '2222:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
修改后重启容器:
bash
docker-compose down && docker-compose up -d
方法 B:直接进入容器修改
bash
# 1. 进入GitLab容器
docker exec -it gitlab bash
# 2. 编辑配置文件
vi /etc/gitlab/gitlab.rb
# 3. 修改external_url为你的IP或域名
external_url 'http://your-server-ip' # 例如:http://192.168.1.100
# 4. 重新配置并重启GitLab
gitlab-ctl reconfigure
gitlab-ctl restart
2. 验证配置是否生效
- 访问 GitLab Web 界面,检查仓库 URL 是否已更新
- 创建新项目,确认克隆地址格式为:
plaintext
http://your-server-ip/namespace/project.git
3. 强制更新已有项目的 URL
如果修改配置后旧项目 URL 未自动更新,可以通过以下命令修复:
bash
# 进入容器
docker exec -it gitlab bash
# 执行数据库迁移命令
gitlab-rails console
> Project.find_each { |project| project.update_attribute(:web_url, project.web_url) }
> exit
4. 常见问题排查
- 防火墙 / 安全组设置:确保服务器的 80/443 端口对外暴露
- 容器端口映射:确认
docker-compose.yml
中端口映射正确(如80:80
) - DNS 解析:如果使用域名,确保域名已正确解析到服务器 IP
- GitLab 健康检查:
bash
docker exec -it gitlab gitlab-rake gitlab:check SANITIZE=true
最终效果
配置正确后,仓库 URL 应显示为:
plaintext
http://your-server-ip/zenglg/111.git # 而非容器ID
如果问题仍然存在,请提供更多信息(如docker-compose.yml
配置、容器日志等),以便进一步排查。