如何在服务器上使用共享运行程序(dind)进行构建阶段并在服务器上使用带有外壳执行程序的运行程序进行部署?

时间:2019-03-15 13:12:05

标签: shell docker continuous-integration gitlab-ci gitlab-ci-runner

我想在共享运行器上构建映像,并在gitlab注册表上构建。

然后,我想使用shell执行程序在服务器上使用运行程序来在服务器上提取该映像。

但是我遇到一个问题,当我尝试运行docker命令时,在我的shell执行器上遇到了这个错误

$ docker info
error during connect: Get http://docker:2375/v1.37/info: dial tcp: lookup docker on 172.31.0.2:53: no such host

这是我的gitlab-ci.yml

image: docker:stable

services:
  - docker:dind

variables:
  CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH
  DOCKER_HOST: tcp://docker:2375
  DOCKER_DRIVER: overlay2

stages:
  - build
  - deploy

before_script:
  - docker info
  - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com

build:
  stage: build
  script:
     - docker pull $CONTAINER_IMAGE:latest || true
     - docker build -f docker-images/web/Dockerfile --cache-from  $CONTAINER_IMAGE:latest --tag $CONTAINER_IMAGE:$CI_COMMIT_SHA --tag $CONTAINER_IMAGE:latest .
     - docker push $CONTAINER_IMAGE:$CI_COMMIT_SHA
     - docker push $CONTAINER_IMAGE:latest

deploy:
  stage: deploy
  script:
    - docker pull $CONTAINER_IMAGE:latest || true
  tags:
    - deploy
    - shell

我在没有构建阶段的情况下进行了测试,并注释了变量DOCKER_HOST和服务docker:dind,并且可以正常工作。执行docker命令并正常运行。

这是我的新手,我认为问题是我的shell执行程序尝试与docker主机tcp:// docker:2375而不是我的docker引擎通信。

我该怎么办?我正在考虑调用shell脚本,然后在此脚本上运行docker命令。但是我想直接在gitlab-ci.yml

上做

0 个答案:

没有答案