从 docker 注册 gitlab-runner 到 gitlab

Meh*_*avi 5 gitlab docker gitlab-ci-runner

我是码头工人的新手。我使用以下命令运行 gitlab ce 容器:

docker run --detach --hostname localhost --publish 443:443 --publish 80:80 --name gitlab --restart always gitlab/gitlab-ce:latest
Run Code Online (Sandbox Code Playgroud)

这个容器工作得很好

我使用以下命令运行 gitlab-runner 容器:

docker run -d --name gitlab-runner --restart always gitlab/gitlab-runner:latest
Run Code Online (Sandbox Code Playgroud)

我的问题是当我想注册 gitlab-runner 时,跑步者问我:

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
Run Code Online (Sandbox Code Playgroud)

我的回答是:http://localhost:80/但它给了我错误:

ERROR: Registering runner... failed                 runner=K8trLPJx status=couldn't execute POST against http://localhost:80/api/v4/runners: Post http://localhost:80/api/v4/runners: dial tcp 127.0.0.1:80: connect: connection refused
PANIC: Failed to register this runner. Perhaps you are having network problems
Run Code Online (Sandbox Code Playgroud)

2 个容器在我的 Windows 10 电脑上运行

我不想在我的电脑上本地运行 gitlab-runner 我希望 docker 运行它

Gia*_*uca 3

问题是两个容器之间缺少网络。您可以像这样手动创建它:

docker network create gitlab-network
Run Code Online (Sandbox Code Playgroud)

然后让您的容器使用以下命令加入它:

docker network connect gitlab-network gitlab
docker network connect gitlab-network gitlab-runner
Run Code Online (Sandbox Code Playgroud)

那么你可以作为 gitlab-ci 协调器 URL 传递gitlab,因为容器的名称是在 docker 网络上可访问容器的 dns。

另一种更优雅的解决方案是使用 来docker-compose管理容器和网络。类似这样的,我没有测试过:

version: '3.3'

services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    networks:
      - gitlab-network
    ports:
      - 80:80
      - 443:443
    

  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    networks:
      - gitlab-network

networks:
  gitlab-network:
Run Code Online (Sandbox Code Playgroud)