雖然可能有上千種版本的Docker映像版本,但我將向您展示一個非常簡單的方法,即使用已經(jīng)非常普遍的方法。它將確保圖像的版本與Git版本標簽匹配,因此您可以確切知道圖像內(nèi)包含哪些代碼。
本教程假定您已經(jīng)具有構建映像的Dockerfile。
版本文件
首先,創(chuàng)建一個VERSION文件,其中只包含版本號:
0.0.1
您需要將此VERSION文件存儲在映像中以確保完整性(并且因為您的程序可以使用它來顯示版本),因此請在Dockerfile中添加以下內(nèi)容:
ADD VERSION .
這會將VERSION文件添加到您的WORKDIR。
構建腳本
如果您還沒有構建腳本,請創(chuàng)建一個并將其命名為build.sh。最簡單的形式就是運行您的docker build:
set -ex
# SET THE FOLLOWING VARIABLES
# docker hub username
USERNAME=treeder
# image name
IMAGE=helloworld
docker build -t $USERNAME/$IMAGE:latest .
您可能需要在此處執(zhí)行一些額外的構建步驟,因此請繼續(xù)添加它們。或者您可能有自己的構建腳本,在這種情況下,您可以忽略此腳本,而只需更改下面腳本中的行即可運行構建。確保使用chmod a + x ./build.sh
以便可以運行它。
Release腳本
現(xiàn)在,讓我們創(chuàng)建一個名為release.sh
的簡單發(fā)布腳本,該腳本將提高版本,運行構建腳本,設置git標簽,將標簽推送到GitHub,構建映像,最后將映像推送到Docker Hub。您可以復制并粘貼以下腳本-只需確保更改頂部的值以匹配您的Docker Hub信息即可:
set -ex
# SET THE FOLLOWING VARIABLES
# docker hub username
USERNAME=treeder
# image name
IMAGE=helloworld
# ensure we're up to date
git pull
# bump version
docker run --rm -v "$PWD":/app treeder/bump patch
version=`cat VERSION`
echo "version: $version"
# run build
./build.sh
# tag it
git add -A
git commit -m "version $version"
git tag -a "$version" -m "version $version"
git push
git push --tags
docker tag $USERNAME/$IMAGE:latest $USERNAME/$IMAGE:$version
# push it
docker push $USERNAME/$IMAGE:latest
docker push $USERNAME/$IMAGE:$version
使用chmod a + x ./release.sh
使其可執(zhí)行,然后使用./release.sh
使其運行。
每次發(fā)布時,只需運行./release.sh
,您將獲得與源代碼相匹配的精美版本的映像!
翻譯自:https://medium.com/better-programming/how-to-version-your-docker-images-1d5c577ebf54