git – Dockerfile版本控制的最佳实践

前端之家收集整理的这篇文章主要介绍了git – Dockerfile版本控制的最佳实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我们是一些正在开发C应用程序的开发人员.

为了确保每个人都使用与远程生产服务器相同的库和依赖项,我们使用docker来编译localhost中的代码源.

我的问题是使用git与docker的最佳实践是什么?

>将Dockerfile添加到源代码存储库
>为我们所有的Dockerfiles创建一个专用的存储库
>为每个Dockerfile创建一个专用存储库
>其他人?

最佳答案
使用源代码保存Dockerfile.我们使用标签将版本信息添加生成的图像中.我们增加

> git commit和branch
>它是否“脏”意味着在src代码上本地更改来自git中的内容
> CI版本号(公开可见)
>构建图像的人(不是最后一次检查git的人)

我们还使用提交编号标记图像.

这是我们的一项服务的代码.我们的CI使用Buildkite,图像注册表使用Quay.io.

build-image.sh

  1. echo '===> Building docker image...'
  2. GIT_BRANCH=$(git name-rev --name-only HEAD | sed "s/~.*//")
  3. GIT_COMMIT=$(git rev-parse HEAD)
  4. GIT_COMMIT_SHORT=$(echo $GIT_COMMIT | head -c 8)
  5. GIT_DIRTY='false'
  6. BUILD_CREATOR=$(git config user.email)
  7. BUILD_NUMBER="${BUILDKITE_BUILD_NUMBER-0}"
  8. # Whether the repo has uncommitted changes
  9. if [[ $(git status -s) ]]; then
  10. GIT_DIRTY='true'
  11. fi
  12. docker build \
  13. -q \
  14. -t quay.io/myco/servicename:latest \
  15. -t quay.io/myco/servicename:"$GIT_COMMIT_SHORT" \
  16. --build-arg GIT_BRANCH="$GIT_BRANCH" \
  17. --build-arg GIT_COMMIT="$GIT_COMMIT" \
  18. --build-arg GIT_DIRTY="$GIT_DIRTY" \
  19. --build-arg BUILD_CREATOR="$BUILD_CREATOR" \
  20. --build-arg BUILD_NUMBER="$BUILD_NUMBER" \
  21. .
  22. echo "Done"
  23. echo "Push to quay using:"
  24. echo " docker push quay.io/myco/servicename:latest"
  25. echo " docker push quay.io/myco/servicename:$GIT_COMMIT_SHORT"

Dockerfile

  1. FROM ...
  2. ARG GIT_COMMIT
  3. ARG GIT_BRANCH=master
  4. ARG GIT_DIRTY=undefined
  5. ARG BUILD_CREATOR
  6. ARG BUILD_NUMBER
  7. LABEL branch=$GIT_BRANCH \
  8. commit=$GIT_COMMIT \
  9. dirty=$GIT_DIRTY \
  10. build-creator=$BUILD_CREATOR \
  11. build-number=$BUILD_NUMBER
  12. ... etc

然后,您可以制作检查图像版本的脚本.例如:

  1. docker inspect --format "{{.ContainerConfig.Labels.commit}}" imageid

猜你在找的Docker相关文章