首页 > 解决方案 > GitLab CI,从 docker dind 连接到 Elastic Search 服务

问题描述

我有在 docker 容器中运行的测试。为此,我使用 docker-dind 服务,我的 .gitlab-ci:

image: "docker:17"

variables:
  DOCKER_DRIVER: overlay2

services:
  - docker:dind
  - name: docker.elastic.co/elasticsearch/elasticsearch:5.5.2
    alias: elasticsearch
    command: [ "bin/elasticsearch", "-Expack.security.enabled=false", "-Ediscovery.type=single-node" ]

stages:
  - test

before_script:
  - apk --update add py2-pip python3 bash zip ansible openssh git docker-py curl
  - pip3 install docker-compose
  - docker info
  - docker-compose --version
    # Login to registry.gitlab.com
  - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com

test:
  script:
    - curl "http://elasticsearch:9200" # this works
    - docker-compose docker-compose.test.yml build --pull
    - docker-compose docker-compose.test.yml run app
  stage: test

我的测试为此使用 ES 我添加了 ES 服务,但我无法从运行测试的容器连接到 ES 集群。当 CI 工作时,在我的带有跑步者的机器上,我有:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS                NAMES
f5d9a64bbe8e        1ee5a99eba5f        "gitlab-runner-build"    1 second ago        Up Less than a second                        runner-b7dcaf73-project-2199705-concurrent-1-predefined-0
c85c49d35946        ca27036dd5e7        "bin/elasticsearch -…"   16 seconds ago      Up 15 seconds           9200/tcp, 9300/tcp   runner-b7dcaf73-project-2199705-concurrent-1-docker.elastic.co__elasticsearch__elasticsearch-1
57472d0300ad        85e924caedbd        "dockerd-entrypoint.…"   17 seconds ago      Up 16 seconds           2375/tcp             runner-b7dcaf73-project-2199705-concurrent-1-docker-0

598c019aa28c - 一个带有跑步者的容器,我可以进入这个容器运行curl "http://elasticsearch:9200"并且它可以工作

57472d0300ad - dind 容器,对吧?我可以进入这个容器但curl "http://elasticsearch:9200"不起作用,docker ps 显示:

/ # docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS               NAMES
252f0588a41d        backend_app            "make _inside_docker…"   6 seconds ago       Up 5 seconds        8080/tcp            backend_app_run_116d12907320
cd0ebb2f1d2d        postgres:9.6            "docker-entrypoint.s…"   7 seconds ago       Up 6 seconds        5432/tcp            backend_postgresql_1

如何从带有测试(252f0588a41d)的容器连接到带有 ES 的容器?谢谢。

标签: dockerelasticsearchdocker-composegitlabgitlab-ci

解决方案


推荐阅读