Как использовать общий запуск (dind) для этапа сборки и запускать с исполнителем оболочки на моем сервере для этапа развертывания? - PullRequest
0 голосов
/ 15 марта 2019

Я хочу выполнить сборку своего образа на общем бегунке и построить его в реестре gitlab.

затем я хочу получить этот образ на моем сервере, используя бегун на моем сервере с помощью оболочки executor.

но я сталкиваюсь с проблемой на моем исполнителе оболочки, когда я пытаюсь запустить команду docker, выдает мне эту ошибку

$ 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 и сервисный докер: dind, и работает.Выполняйте команды docker и работайте хорошо.

Я новичок в этом, я думаю, проблема в том, что мой исполнитель оболочки пытается соединиться с хостом докера tcp: // docker: 2375, а не с моим механизмом докера.

Что я могу сделать ?.Я думал о вызове сценария оболочки и запуске команд докера для этого сценария.Но я бы хотел сделать это прямо на моем gitlab-ci.yml

...