【问题标题】:Gitlab CI Runner Docker Executor Expose PortsGitlab CI Runner Docker Executor 暴露端口
【发布时间】:2017-10-28 03:38:53
【问题描述】:

我有 gitlab ci 和 gitlab 容器。一个项目注册到 gitlab runner 使用 docker 执行器。一切都好。我将特权模式设置为 true。有关于 docker run 的标志,例如卷共享、特权模式、图像、服务、链接等。但我在 runner.dockers 部分中找不到有关端口公开的标志。我的目标是运行一个带有容器的管道,可以通信其端口。

是否可以用 gitlab runner ci 来实现这个问题。

【问题讨论】:

    标签: docker gitlab-ci


    【解决方案1】:

    通常这就是服务的用途。您将获取一个要在其上公开端口的容器并将其定义为服务。这样,没有暴露的端口,但有一个服务链接可用于容器间通信。这对 Docker 执行器有效,在 Kubernetes 执行器中,所有服务都是 pod 的一部分,因此可以直接在 localhost 上使用。

    换句话说:例如,如果您需要在默认端口 5432 上运行构建作业的 PostgreSQL,您只需启动 postgres:latest 作为您作业的服务。然后,您可以通过 postgres:5432 使用 Docker 执行器和 localhost:5432 使用 Kubernetes 执行器来引用它。

    如果服务不适合您的用例,您可能想扩展您的问题,即它们在哪里失败,可能会有替代答案。

    【讨论】: