Сохраните файл Docker с исходным кодом. Мы используем ярлыки для добавления информации о версиях в созданное изображение. Добавим:
- мерзавец фиксации и ветви
- ли это «грязный» означает, что изменения были сделаны локально на коде Src от того, что в мерзавца
- ряд CI версия (общедоступен)
- лицо, которое построило изображение (не тот, кто последний проверял в git)
Мы также помечаем изображение номером фиксации.
Вот наш код для одного из наших услуг. Мы используем Buildkite для нашего CI и Quay.io для нашего реестра изображений.
build-image.sh
echo '===> Building docker image...'
GIT_BRANCH=$(git name-rev --name-only HEAD | sed "s/~.*//")
GIT_COMMIT=$(git rev-parse HEAD)
GIT_COMMIT_SHORT=$(echo $GIT_COMMIT | head -c 8)
GIT_DIRTY='false'
BUILD_CREATOR=$(git config user.email)
BUILD_NUMBER="${BUILDKITE_BUILD_NUMBER-0}"
# Whether the repo has uncommitted changes
if [[ $(git status -s) ]]; then
GIT_DIRTY='true'
fi
docker build \
-q \
-t quay.io/myco/servicename:latest \
-t quay.io/myco/servicename:"$GIT_COMMIT_SHORT" \
--build-arg GIT_BRANCH="$GIT_BRANCH" \
--build-arg GIT_COMMIT="$GIT_COMMIT" \
--build-arg GIT_DIRTY="$GIT_DIRTY" \
--build-arg BUILD_CREATOR="$BUILD_CREATOR" \
--build-arg BUILD_NUMBER="$BUILD_NUMBER" \
.
echo "Done"
echo "Push to quay using:"
echo " docker push quay.io/myco/servicename:latest"
echo " docker push quay.io/myco/servicename:$GIT_COMMIT_SHORT"
Dockerfile
FROM ...
ARG GIT_COMMIT
ARG GIT_BRANCH=master
ARG GIT_DIRTY=undefined
ARG BUILD_CREATOR
ARG BUILD_NUMBER
LABEL branch=$GIT_BRANCH \
commit=$GIT_COMMIT \
dirty=$GIT_DIRTY \
build-creator=$BUILD_CREATOR \
build-number=$BUILD_NUMBER
... etc
Затем вы можете сделать скрипты, которые проверяют версию изображения. Например:
docker inspect --format "{{.ContainerConfig.Labels.commit}}" imageid
Сам файл Dockerfile можно рассматривать как файл makefile. Поэтому держите его там, где вы их сохранили. Вероятно, это вариант 1. Или вы говорите об изображении докера, созданном при запуске Dockerfile? – Thilo