首页 > 解决方案 > GitlabCI - 如何使用 docker:dind 在管道中访问正在运行的容器

问题描述

我遇到了一个问题,即使我可以在网上阅读所有内容,我仍然卡住了......

我为 MongoDB 开发了一个“抽象”,并进行了一些单元测试和一些 E2E 测试。对于“端到端”测试,我需要 MongoDB 在我的管道中运行。昨天我在 CloudBuild 上,但今天我在 Gitlab 上,并且......我无法再运行这些测试......


我有以下内容:

gitlab-ci.yml

image: docker:latest

services:
  - docker:dind

variables:
  DOCKER_TLS_CERTDIR: ""
  DOCKER_HOST: "tcp://docker:2375"

stages:
  - test


.anchors:
  - &start-mongodb-docker-compose
      apk add --no-cache docker-compose
      && docker-compose -f e2e_tests/docker-compose.yml up --build -d


integration-tests:
  image: golang:1.16
  stage: test
  before_script:
    - *start-mongodb-docker-compose
  script:
    - make test
  only:
    - master

e2e_tests/docker-compose.yml

version: "3.7"

services:
  mongodb:
    container_name: MongoDB_E2E
    image: mongo
    restart: always
    ports:
      - "27017:27017"

生成文件

PROJECT_NAME="yyyyyy"
PKG="gitlab.com/xxxxxx/$(PROJECT_NAME)"

.PHONY: all

all: test
test: unit-tests e2e-tests

unit-tests: ## Run unittests
    @go test -v ./... --tags=unit

e2e-tests: ## Run end-to-end tests
    @go test -v ./... -p 1 --tags=e2e

coverage: ## Generate global code coverage report
    @go test -v -coverprofile .testCoverage.txt

如您所见,我已经从网上尝试了一些,例如DOCKER_HOST但是.. 目前没有任何效果。如果有人有想法,我很想听听。我也尝试network像为 CloudBuild 所做的那样设置,但它也没有工作......

谢谢你的帮助!

最大限度

标签: dockertestingdocker-composegitlab-ci

解决方案


推荐阅读