加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:36:33 所属栏目:安全 来源:网络整理
导读:我们是一些正在开发C应用程序的开发人员. 为了确保每个人都使用与远程生产服务器相同的库和依赖项,我们使用docker来编译localhost中的代码源. 我的问题是使用git与docker的最佳实践是什么? 将Dockerfile添加到源代码存储库 为我们所有的Dockerfiles创建一个

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

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

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

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

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

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

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

这是我们的一项服务的代码.我们的CI使用Buildkite,图像注册表使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读