我有这样指定的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 }}不起作用。有什么想法吗?
答案 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
答案 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 ...
。