无法在Gitlab-CI中的Docker容器之间进行通信

时间:2020-10-01 16:08:14

标签: docker gitlab gitlab-ci

在我的CI管道的第二阶段(构建了新的docker映像之后)。我正在使用其他Docker容器来测试新映像,但是无法在这些容器之间发送任何请求。我的CI配置如下:

stages:
    - build
    - test

services:
    - docker:dind

variables:
    # Enable network-per-build to allow gitlab services to see one another
    FF_NETWORK_PER_BUILD: "true"
    DOCKER_DRIVER: overlay2
    DOCKER_HOST: tcp://docker:2376
    DOCKER_TLS_CERTDIR: '/certs'
    IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
    # IMAGE SETTINGS
    NODE_ENV: "development"
    API_URL: "http://danielgtaylor-apisprout:8000"
    PORT: 8080

build:
    stage: build
    image: docker
    script:
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
        - docker build -t ${CI_REGISTRY_IMAGE}:test .
        - docker push ${CI_REGISTRY_IMAGE}:test

test:
    stage: test
    image: docker
    services:
    - docker:dind
    - name: ${CI_REGISTRY_IMAGE}:test
      alias: server
    script:
        - docker run --rm --name apisprout -d -v $CI_PROJECT_DIR/v2-spec.yml:/api.yaml danielgtaylor/apisprout /api.yaml
        - docker run --rm --name newman -v $CI_PROJECT_DIR:/etc/newman postman/newman run 'Micros V2.postman_collection.json'

并收到以下错误ENOTFOUND server server:8080

我也尝试过使用新的桥接网络:

test:
    stage: test
    image: docker
    services:
    - docker:dind
    script:
        - docker network create -d bridge mynet
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY 
        - docker run -d --network=mynet --hostname=server ${CI_REGISTRY_IMAGE}:test
        - docker run --rm --network=mynet --hostname=apisprout --name apisprout -d -v $CI_PROJECT_DIR/v2-spec.yml:/api.yaml danielgtaylor/apisprout /api.yaml
        - docker run --rm --network=mynet --name newman -v $CI_PROJECT_DIR:/etc/newman postman/newman run 'Micros V2.postman_collection.json'

但是我收到相同的错误ENOTFOUND server server:8080

我无法将docker run容器作为服务运行,因为我认为尚不支持附加卷。 我也在Gitlab.com上而不是私人跑步者上运行它。

0 个答案:

没有答案
相关问题