2016-07-03 5 views
9

Ich habe einen Docker Hub-Container, der eine Anwendung ausführt. Normalerweise wird die Anwendung durch Klonen des Quell-Git-Repos ausgeführt, aber für den Fall, dass ich eine bestimmte Version ausführen möchte, hat die Anwendung verschiedene Versionen markiert. Zum Beispiel kann ich einWas sind die besten Methoden zum Markieren von Docker Hub-Versionen

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

Als Docker Hub Betreuer, würde Ich mag die Versionen der Software mit dem Behälter spiegeln. Gibt es andere Möglichkeiten als nur manuell, wenn eine Veröffentlichung herauskommt?

Gerade jetzt meine Dockerfile enthält so etwas wie diese:

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

In diesem Beispiel würde ich einen markierten Zweig einer Docker Datei halten, die die APP_VER auf 2.1.0 setzen und dann unterstützt Docker Hub das, aber Wenn ich Änderungen am Repo mache, ist nicht klar, wie ich diese Dockerdatei für jeden Zweig nicht ändern würde.

+1

Wenn es in Github markiert ist, würde sich die Datei nicht ändern, wie Sie mit der markierten Datei verknüpfen würden, nein? Zum Beispiel [nginx] (https://hub.docker.com/r/_/nginx/). – ldg

+0

Ja, du musst die Datei für jede Version ändern, so wie es aussieht, wie es nginx tat – Lizbeth

Antwort

2

sollten Sie in der Lage sein zu tun, was Sie über Docker Hub des automatischen Build und in Buildeinstellungen, richten Sie das Muster zwischen Ihrem Github-Tag Namen und der Docker Tag Name passend zu beschreiben. Sie können Platzhalter und die Variable {sourceref} `," verwenden, die sich auf den Quellzweig/Tag-Namen bezieht ".

Immer wenn Sie ein neues Bild mit einem Docker-Tag, das einem Github-Tag entspricht, übertragen, wird die entsprechende Docker-Datei abgerufen - die vorherigen Tags bleiben unverändert. So kann jemand ein älteres Docker Bild ziehen und den passenden Github-Code durch den Tag als Referenz, wie Sie erwähnt:

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

In diesem Fall ist es vorausgesetzt, dass Sie Docker Hub einrichten, um mit den Werten übereinstimmen und jedes Tag (Docker Bild und Github) ist 2.1.0

Ich bin nicht wirklich sicher, was Sie mit "jeder Zweig", die Teil der Verwirrung sein kann, vor allem, wenn Sie an SVN gewohnt sind. In git ist ein Tag nicht an einen Zweig gebunden, sondern an ein bestimmtes Commit (oder einen bestimmten Zeitpunkt). Wenn Sie also dieses Tag abrufen, wird es immer die gleiche Version des Codes verwenden wie zu diesem Zeitpunkt gemacht. (In der Regel die gleiche Zeit wie ein Release wurde geschnitten.)

Verwandte Themen