如何让Docker Gitlab CI运行器在其父主机上访问Git?

时间:2015-12-09 17:39:01

标签: docker gitlab

Gitlab在http://gitlab

的内部网络上设置

同一台机器上的Docker容器无法连接到它。

如何配置docker以便它知道gitlab是它的父级?

当Gitlab CI尝试运行构建(在Docker容器内)时,问题就出现了:

  

克隆到' / builds / ns / project' ...致命:无法访问   ' http://gitlab-ci-token:xxxxxx@gitlab/ns/project.git/':无法做到   解决主持人' gitlab'

我已尝试将网络的DNS服务器添加到$stmt = $pdo->prepare("SELECT first_name, .......,:member"); $stmt->execute(array(":member"=>$_GET['member'])); 中的DOCKER_OPTS,但无济于事。

3 个答案:

答案 0 :(得分:13)

根据GitLab CI Runner Advanced configuration,您可以尝试使用GitLab CI运行中的extra_hosts参数。 在/etc/gitlab-runner/config.toml

[[runners]]
  url = "http://gitlab/ci"
  token = "TOKEN"
  name = "my_runner"
  executor = "docker"
  [runners.docker]
    host = "tcp://<DOCKER_DAEMON_IP>:2375"
    image = "..."
    ...
    extra_hosts = ["gitlab:192.168.0.39"]

使用此示例,当运行测试git的容器内部将尝试从 gitlab 克隆时,它将使用192.168.0.39作为此主机名的IP。

答案 1 :(得分:0)

您可以使用--dns标记将容器dns配置为docker runhttps://docs.docker.com/engine/reference/run/#network-settings),但默认情况下应使用主机dns。

答案 2 :(得分:0)

如果您的Gitlab安装也作为Docker容器运行,只需将gitlab-runner链接到gitlab容器即可:

docker run -d --name gitlab-runner --restart always --link gitlab \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest

Docker负责制作主机&#39; gitlab&#39;可在gitlab-runner中找到。