docker - 如何阻止 TeamCity 每次都重新构建 docker 依赖项?

标签 docker docker-compose teamcity bitbucket

我有一个 TeamCity 构建项目,它使用十几个 Docker 容器的构建版本来参数化 docker-compose.yml 模板,因此为了从每个容器中获取 build_counter,我将它们设置为 docker-compose 构建作业中的快照依赖项.每个容器的 Dockerfile 和其他文件都在它们自己的 BitBucket 存储库中,并且它们具有相应文件的触发器。在 docker-compose 构建中的快照依赖项中,我将它们设置为“如果有合适的构建,则不运行新构建”但它仍然尝试运行所有依赖构建,即使它们各自没有任何更改 repo 。

这使得应该非常简单和快速的构建成为一个非常长的构建。并且很多时候,其中一个依赖构建会因“无法收集更改:连接被拒绝”而失败,我怀疑这与 TC 试图同时访问所有这些不同的存储库有关。

每次运行 docker-compose 构建时,我能做些什么来不触发每个依赖项的构建?

编辑:

这是我们的 docker-compose.yml.j2 的示例:http://termbin.com/b2xy

显然,为了共享,我已经对其进行了 sanitizer ,我们真正的 docker-compose 模板列出了大约十几个服务。

以下是其中一项服务的 Dockerfile 示例:http://termbin.com/upins

最佳答案

与其每次都更改构建的源代码(参数化 docker-compose.yml)并强制构建构建,您可以考虑独立构建容器,同时使用版本增量和标签标记它们。构建后将图像存储在本地注册表中。使用 docker-compose 来满足您的运行时需求。 docker-compose 可以使用多个 yaml 文件,因此如果您需要其他图像用于特定构建,只需拉取您需要的其他图像。对于生产,使用另一个组成系统运行的 yaml 文件。将 LABEL 添加到您的 Dockerfile。见 http://label-schema.org//rc1/适合您需要的一组标签。

关于docker - 如何阻止 TeamCity 每次都重新构建 docker 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50135940/

相关文章:

spring - 在Docker中运行嵌入式mongo时org.springframework.beans.factory.UnsatisfiedDependencyException

Docker COPY 并保留目录

docker - 如何将Sample Logstash docker 容器链接到Elastics网站上的Sample Elasticsearch集群?

java - 如何在docker compose中配置logstash?

azure - 使用powershell覆盖ftp文件

visual-studio - 带有 Git 的 TeamCity Visual Studio 插件

c# - 在 Docker 上运行 .NET framework console-app 服务

java - com.mongodb.MongoSocketOpenException : Exception opening socket 异常

docker - 按需创建/删除 docker 容器

ant - Teamcity ant 构建类路径 - 如何添加额外的 jar