Я бы хотел создать репозиторий 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
я обновил (не автоматически).
Улучшить автоматизацию?
Решения, которые я вижу для улучшения автоматизации:
- отделяйте каждый
Dockerfile
в своем собственном репозитории GitHub . Нет больше dockerfiles
репозитория, поэтому у каждого свой рабочий процесс
- использовать один репозиторий 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.
Каковы лучшие практики?