Как собрать, перенести и вытащить несколько док-контейнеров с помощью gitlab ci? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть файл docker-compose, который создает два контейнера, приложение узла и сервер ngnix.Теперь я хотел бы автоматизировать процесс сборки и запуска на сервере с помощью бегунов gitlab.Я довольно новичок в области CI, поэтому прошу прощения за мой подход:

Я бы хотел создать несколько репозиториев на gitlab.com и иметь файл Docker для каждого из них.Теперь мне нужно связать экземпляр gitlab-runner с каждым из этих проектов, чтобы создать образ, передать его в репозиторий Docker и позволить серверу получить его оттуда?И тогда мне нужно было бы как-то отправить файл docker-compose на сервер и скомпоновать все оттуда.

Итак, мои вопросы:

  1. Могу ли я запустить несколько (2или 3) gitlab-runner для всех моих репозиториев на одном сервере?
  2. Нужен ли мне определенный или совместно используемый раннер и в чем разница?
  3. Почему все учебники используют самодостаточный gitlabэкземпляры вместо использования репозиториев gitlab (нельзя ли использовать gitlab-runner с репозиториями gitlab.com?)
  4. Можно ли использовать docker-compose в конвейере gitlab-runner и просто собрать все сразу?

Извините за неструктурированные записи, но у меня много вопросов относительно этих технологий.

Заранее спасибо

1 Ответ

0 голосов
/ 04 июня 2018

Прежде всего, вы, очевидно, можете использовать возможности GitLab CI / CD на https://gitlab.com, а также на автономных экземплярах GitLab.Это ничего не меняет, кроме хоста, на котором вы зарегистрируете вашего бегуна:

Вы можете добавить столько бегунов, сколько захотите (я так думаю, и, по крайней мере, у меня есть 5-6 участников на проект без проблем).Вам просто нужно зарегистрировать каждого из этих участников для вашего проекта.См. Регистрация участников .

Что касается общих бегунов по сравнению с конкретными бегунами, я думаю, что вы должны придерживаться общих бегунов, если хотите попробовать GitLab CI / CD.

Общие бегуны на GitLab.com запускаются в автоматическом масштабережим и питание от DigitalOcean.Автоматическое масштабирование означает сокращение времени ожидания для ускорения сборок и выделение виртуальных машин для каждого проекта, что обеспечивает максимальную безопасность.

Они могут свободно использоваться для общедоступных проектов с открытым исходным кодом и ограничены 2000 CI минутами в месяц на группу для частных лиц.проекты.Читайте обо всех планах GitLab.com.

Вы можете установить собственные бегуны на любой машине, например, на ноутбуке.Вы можете развернуть его с помощью Docker для быстрого запуска.

Наконец, да, вы можете использовать docker-compose в файле gitlab-ci.yml, если вы используете ssh executor и имеете docker-composeустановить на свой сервер.Но я рекомендую использовать docker executor и использовать docker:dind (Docker в Docker) image

Что такое Docker в Docker?

Хотя работает DockerВнутри Docker, как правило, не рекомендуется, есть> некоторые законные варианты использования, такие как разработка самого Docker.

Вот пример использования, без docker-compose, хотя:

image: docker:latest

services:
  - name: docker:dind
    command: ["--experimental"]


before_script:
  - apk add --no-cache py-pip      # <-- add python package install pip
  - pip install docker-compose     # <--- add docker-compose 
  - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin    # <---- Login to your registry

build-master:
  stage: build
  script:
    - docker build --squash --pull -t "$CI_REGISTRY_USER"/"$CI_REGISTRY_IMAGE":latest .
    - docker push "$CI_REGISTRY_USER"/"$CI_REGISTRY_IMAGE":latest
  only:
    - master

build-dev:
  stage: build
  script:
    - docker build --squash --pull -t "$CI_REGISTRY_USER"/"$CI_REGISTRY_IMAGE":"$CI_COMMIT_REF_SLUG" .
    - docker push "$CI_REGISTRY_USER"/"$CI_REGISTRY_USER":"$CI_COMMIT_REF_SLUG"
  except:
    - master

Как видите, я создаю образ Docker, отмечаю его, затем помещаю в мой реестр Docker, но вы можете отправить его в любой реестр.И, конечно, вы можете использовать docker-compose в любое время в объявлении script

Мой Git-репозиторий выглядит так:

/my_repo
|---- .gitignore    
|---- .gitlab-ci.yml    
|---- Dockerfile    
|---- README.md

А config.toml моего бегуна выглядит так:

[[runners]]
  name = "4Gb digital ocean vps"
  url = "https://gitlab.com"
  token = "efnrong44d77a5d40f74fc2ba84d8"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:dind"
    privileged = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0
  [runners.cache]

Вы можете взглянуть на https://docs.gitlab.com/runner/configuration/advanced-configuration.html для получения дополнительной информации о конфигурации Runner.

Примечание. Все используемые здесь переменные секретные переменные .См. https://docs.gitlab.com/ee/ci/variables/ для объяснений

Я надеюсь, что он отвечает на ваши вопросы

...