我在单独的容器中运行 gitlab 和 runner。 Gitlab 可以在本地主机端口 80 上访问,我可以使用
进行克隆http://username:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="80f0e1f3f3f7eff2e4c0b1b7b2aeb1b7aeb0aeb1" rel="noreferrer noopener nofollow">[email protected]</a>/root/citest.git
172.17.0.1是我的盒子上docker0接口(interface)的IP 然而,当运行任何管道时,我遇到了可怕的“您似乎克隆了一个空存储库”问题。调查显示,运行者拥有以下 Remote :
[remote "origin"]
url = http://gitlab-ci-token:jEZ_WtWKR4LaP63Qrk_E@b4b32c3cc3e7/root/citest.git
b4b32c3cc3e7 是 gitlab-ce 容器 ID
我猜这是因为我在容器上运行 gitlab 并且没有配置特定的域名?
如果我的猜测是正确的,我可以在 gitlabci.yml 中设置任何环境变量来调整 gitlab 服务器的位置吗?
否则,有什么方法可以让运行者始终知道 gitlab 的 ip 正在变化吗?
上面的内容有点专业,可能会令人困惑,所以这里有一些背景:我正在尝试为学生创建一个 devops 实验室,以学习 git、ci/cd 和其他 devops-y 实践。我只能在我的笔记本电脑上部署这个临时程序,无论我当时拥有什么 IP,并要求他们连接到我的盒子。在这种情况下,除了容器 IP 之外,我看不到任何在 gitlab 中设置域或任何静态内容的方法,对吗?
最佳答案
所以,我没有尝试说服两个容器相互通信,而是使用了 docker compose,下面是我的 docker-compose.yml
version: "2"
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url "http://gitlab:80"
gitlab_rails["gitlab_shell_ssh_port"] = 2224
gitlab_rails["lfs_enabled"] = true
gitlab_rails["time_zone"] = "CET"
gitlab_rails["gitlab_email_enabled"] = false
ports:
- '22:22'
- '80:80'
- '443:443'
volumes:
- 'gitlab_config:/etc/gitlab'
- 'gitlab_logs:/var/log/gitlab'
- 'gitlab_data:/var/opt/gitlab'
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
restart: always
volumes:
- 'runner_config:/etc/gitlab-runner'
- '/var/run/docker.sock:/var/run/docker.sock'
depends_on:
- gitlab
links:
- gitlab
volumes:
gitlab_config:
gitlab_logs:
gitlab_data:
runner_config:
这允许在本地主机上访问 gitlab,而且运行者也可以在 http://gitlab 上看到 gitlab
关于docker - 如何配置 gitlab-ci runner 从正确的 http url 克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47371921/