如何配置gitlab-ci runner从正确的http url

时间:2017-11-18 22:52:45

标签: docker gitlab gitlab-ci-runner

我在单独的容器中运行gitlab和runner。 Gitlab在localhost端口80上是可访问的,我可以用

进行克隆
http://username:password@172.17.0.1/root/citest.git

172.17.0.1是我框中docker0接口的ip 但是,当运行任何管道时,我遇到了可怕的“你似乎克隆了一个空的存储库”问题。调查显示,跑步者有以下遥控器:

[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部署此ad-hoc,并要求他们连接到我的盒子。在这种情况下,除了容器ip之外,我没有看到任何方法在gitlab中设置域或任何静态的东西,对吗?

1 个答案:

答案 0 :(得分:1)

所以,不是试图说服两个容器互相交谈,而是使用了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:

这样可以在localhost上访问gitlab,但是运行者也可以在http://gitlab上看到gitlab