Одиночный dockerfiles GitHub репозиторий + Docker Hub автоматизированные сборки - PullRequest
0 голосов
/ 08 ноября 2018

Я бы хотел создать репозиторий dockerfiles на GitHub, чтобы централизовать все пользовательские Dockerfile, которые я создал до сих пор. Я также хотел бы автоматизировать сборки каждого образа в Docker Hub независимо.

На GitHub есть много подобных репозиториев:

(я бы не говорил здесь о самом помеченном хранилище: https://github.com/jessfraz/dockerfiles,, потому что, как вы можете видеть на Docker Hub , это , а не автоматические сборки)

Требуется структура dockerfiles хранилище

Мне бы хотелось, чтобы мой dockerfiles репозиторий GitHub имел следующую структуру (ветвь master) на основе репозиториев GitHub, о которых я упоминал выше:

dockerfiles (GitHub repo)
    |- docker-image-1
        |- Dockerfile
    |- docker-image-2
        |- Dockerfile
    |- ...

Docker Hub строит автоматизацию

Конфигурация

В Docker Hub я мог создать 2 общедоступных автоматизированных сборки: docker-image-1 и docker-image-2, обе ссылаются на мой dockerfiles GitHub-репозиторий, но с другими Настройки сборки (на самом деле, только Расположение Dockerfile отличается):

  • для docker-image-1:
    • Тип : Филиал
    • Имя : мастер
    • Расположение Dockerfile : / docker-image-1 /
    • Имя тега Docker : последний
  • для docker-image-2:
    • Тип : Филиал
    • Имя : мастер
    • Расположение Dockerfile : / docker-image-2 /
    • Имя тега Docker : последний

Недостатки

С этой конфигурацией все изображения будут перестроены, если будет сделано нажатие на ветку master (даже если только толчок 1 Dockerfile связан с push и Расположение Dockerfile разные). Я проверил, похоже, что он настроен для хранилища vimagick . Но я не думаю, что это правильный путь (если я ошибаюсь, скажите мне).

Конечно, в Настройки сборки каждой автоматической сборки, я мог бы отключить опцию " Когда она активна, сборки будут происходить автоматически при нажатии ", чтобы избежать этого, но у меня будет запускать каждую сборку вручную в зависимости от того, что Dockerfile я обновил (не автоматически).

Улучшить автоматизацию?

Решения, которые я вижу для улучшения автоматизации:

  1. отделяйте каждый Dockerfile в своем собственном репозитории GitHub . Нет больше dockerfiles репозитория, поэтому у каждого свой рабочий процесс
  2. использовать один репозиторий GitHub dockerfiles, но с различными ветвями (по одной на каждый образ Docker). Затем каждая сборка может быть настроена на запуск только в соответствующей ветке

С этими решениями проблема в том, что я потерял глобальный обзор всех моих Dockerfile с. Я предпочитаю идею единого репозитория с одной ветвью, но я не хочу, чтобы все образы перестраивались при каждом нажатии этой отдельной ветви.

Если я выбираю решение 1, я не знаю, может ли git помочь мне сохранить один репозиторий dockerfiles со ссылкой на все мои репозитории, например:

 dockerfiles (GitHub repo)
    |- docker-image-1 -> link to https://github.com/norbjd/docker-image-1
        |- Dockerfile
    |- docker-image-2 -> link to https://github.com/norbjd/docker-image-2
        |- Dockerfile

Тогда было бы проще клонировать весь проект и выполнять запросы извлечения (поскольку некоторые изображения связаны: обновление docker-image-1/Dockerfile может привести к обновлению docker-image-2/Dockerfile). Я читал о подмодулях и поддеревьях Git, но не знаю, подходят ли они здесь.

Возможно, это возможно с одним репозиторием, и это просто поиск подходящих настроек сборки Docker Hub.

Каковы лучшие практики?

...