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

k13*_*13i 6 continuous-integration suppress docker docker-compose

我有 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
Run Code Online (Sandbox Code Playgroud)

当我在docker-compose up本地运行时,构建上下文确实存在并且一切正常。但是,我的 CI 服务器配置为使用相同的 docker-compose.yml 文件,但没有构建上下文(图像通过 SSH 复制为 .tar 存档,然后通过 docker load 加载)。现在我有一个错误:

错误:构建路径 /foo 要么不存在,要么不可访问,要么不是有效的 URL。

所以我试图找到一种方法来抑制在运行时寻找这个构建上下文docker-compose up(我不想构建图像,因为它们已经是最新的),但docker-compose up --no-build不起作用。有任何想法吗?

小智 3

在这种情况下,docker-compose.override.yml 是一个很好的解决方案。您可以仅覆盖构建块,这作为两个独立文件并不难维护。

docker-compose.override.yml:

version: '3'
  services:
    my-service:
      build:
        context: foo
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '3'
  services:
    my-service:
      container_name: my-service
      image: my-service
      ports:
        - 8088:8088
Run Code Online (Sandbox Code Playgroud)

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