2016-07-03 1 views
9

У меня есть контейнер Docker Hub, который запускает приложение. Обычно он запускает приложение, клонируя исходный git-репо, но в случае, когда я хочу запустить определенную версию, приложение отметило различные выпуски. Например, я могу сделатьКаковы наилучшие методы для маркировки версий Docker Hub

git clone https://github.com/author/application.git 
git checkout release-1.0.0 

Как сопровождающий Docker Hub, я хотел бы зеркало версий программного обеспечения с контейнером. Есть ли какие-либо другие варианты, кроме того, что это делается вручную, когда выйдет релиз?

Сейчас моя Dockerfile содержит что-то вроде этого:

ENV APP_VER=2.0.0 
RUN git clone ...; git checkout ${APP_VER} 

В этом примере, я хотел бы сохранить помеченную ветвь Docker файла, который устанавливает APP_VER 2.1.0, а затем Docker Hub поддерживает это, но если я вношу изменения в репо, неясно, как я не буду вносить изменения в этот файл Docker для каждой ветки.

+1

Если он отмечен в Github, файл не изменится, поскольку вы ссылаетесь на файл с тегами, нет? Например, [nginx] (https://hub.docker.com/r/_/nginx/). – ldg

+0

Да, вам нужно изменить файл для каждой версии, что похоже на nginx. – Lizbeth

ответ

2

Вы должны быть в состоянии делать то, что вы описываете через Automated Build Docker Hub и в настройках сборки, настроить шаблон соответствия между Github тегом Имя и Докер Tag Name. Вы можете использовать подстановочные знаки и переменную {sourceref} `," которая ссылается на имя ветви/тега источника ".

Всякий раз, когда вы нажимаете новое изображение с тегом Docker, которое соответствует тегу Github, оно вытаскивает соответствующий файл Docker - предыдущие теги остаются нетронутыми. Так что кто-то может вытащить старую Docker изображение и соответствующий код GitHub с помощью тега в качестве ссылки, как вы упомянули:

ENV APP_VER=2.1.0 
RUN git clone ... app.git; git -C app checkout ${APP_VER} 

В этом случае предполагается, что вы Docker Hub настроить в соответствии со значениями, и каждый тег (Изображение Docker и Github) 2.1.0

Я не совсем уверен, что вы подразумеваете под «каждой ветвью», которая может быть частью замешательства, особенно если вы привыкли к SVN. В git тег не привязан к ветке, а скорее определенному фиксации (или ~ точке во времени), поэтому, когда вы извлекаете этот тег, он всегда будет использовать ту же версию кода, что и когда сделал. (Как правило, то же время, что и релиз, был сокращен.)

Смежные вопросы