docker compose-忽略构建上下文路径

时间:2018-11-20 08:43:28

标签: docker docker-compose continuous-integration suppress

我有这样指定的totalRepeatingCharacters属性的docker-compose.yml文件:

build context

当我在本地运行version: '3' services: my-service: container_name: my-service image: my-service build: context: foo ports: - 8088:8088 # other services 时,存在构建环境 ,并且一切正常。但是,我的CI服务器配置为使用相同的docker-compose.yml文件,但没有构建上下文(图像通过SSH复制为.tar存档,然后通过docker load加载)。 现在我有一个错误:

  

错误:构建路径/ foo不存在,不可访问或   不是有效的网址。

因此,我试图找到一种方法来禁止在运行docker-compose up时查找此构建上下文(我不想构建图像,因为它们已经是最新的了),但是{{1 }}不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

在这种情况下,

docker-compose.override.yml是一个很好的解决方案。您可以只覆盖build块,并且不难将其保留为两个独立文件。

docker-compose.override.yml:

version: '3'
  services:
    my-service:
      build:
        context: foo

docker-compose.yml

version: '3'
  services:
    my-service:
      container_name: my-service
      image: my-service
      ports:
        - 8088:8088

请参见https://docs.docker.com/compose/extends/

答案 1 :(得分:0)

我遇到了同样的问题,在“ docker-compose config”提供一种跳过目录存在检查的方法之前,我的解决方案是自动创建“ docker-compose config”期望的目录。

这里是一线做的:

egrep '    (context:|build)' < docker-compose.yml | sed -E 's/\s+\S+:\s*//' | xargs mkdir -p .

这很丑陋,但我想不出另一种方法。 (dngnezdi提到的.extends。方法不是解决方案,因为我需要一种自动方法。)

答案 2 :(得分:0)

我已将您的问题作为功能请求发布到docker-compose存储库中。让我们看看它如何进展:

https://github.com/docker/compose/issues/7674

同时,您将不得不通过修改执行docker-compose up --no-build的CI脚本来解决此问题,以便它执行所需的mkdir -p ...