【问题标题】:Docker Compose: Stop "depends_on" service when "parent" finishesDocker Compose:“父”完成时停止“depends_on”服务
【发布时间】:2018-07-10 17:19:02
【问题描述】:

是否可以告诉 docker compose 在不使用 --abort-on-container-exit 的情况下完成父服务测试后终止 depends_on 数组上指定的服务?

我正在尝试构建一个运行多个应用程序测试的 docker 文件,例如:

services:
  test-spa:
    build:
      context: ./spa
      dockerfile: Dockerfile.test
    command: ["yarn", "run", "test", "--watch", "false"]
  lint:
    build:
      context: ./spa
      dockerfile: Dockerfile.test
    command: ["yarn", "run", "lint"]
  build:
    build:
      context: ./spa
      dockerfile: Dockerfile.test
    command: ["yarn", "run", "build", "--prod"]
  test-backend:
    build:
      context: ./backend
      dockerfile: Dockerfile.dev
    entrypoint: [scripts/entrypoint.sh]
    command: bundle exec rails test
    depends_on:
      - db
  db:
    image: postgres

问题是test-backenddb 服务作为依赖项启动,运行它的测试,退出并且db 永远不会完成。

使用--abort-on-container-exit 不是一个选项,因为spa 相关服务可能会在test-backend 结束之前退出。

【问题讨论】:

  • 我相信您正在寻找的是一个 shell 脚本。这将是微不足道的。这不是 docker-compose 的特性,如果你转换到 swarm 模式,你会发现不再支持depends_on。无论如何,它从来没有真正做到人们所期望的。在此处查看所有注释:docs.docker.com/compose/compose-file/#depends_on
  • 是的!我们有一些 shell 脚本允许我们在 CI 上运行测试套件。只是想知道当另一个服务完成时是否有一种本地方法可以杀死一个服务。

标签: docker docker-compose dockerfile


【解决方案1】:

我不认为这是 docker-compose 的内置功能。但是您可以轻松编写解决方案,例如:

docker-compose up -d db
docker-compose up test-backend
docker-compose down db

在 docker-compose 之外,还有 docker container wait 命令可以让您挂起直到容器退出。您可以使用 docker container ls 查找容器名称并根据标签或其他唯一值进行过滤,或者您可以依赖 compose ($project_$service_$replica) 中可预测的容器名称。 docker container wait 命令将允许您以分离状态启动整个项目,然后等待一个容器退出,然后再继续停止它,例如:

docker-compose up -d
docker container wait $(basename $(pwd))_test-backend_1
docker-compose down db

【讨论】:

    【解决方案2】:

    Oneliner 在使用 docker compose 进行开发时很有用。它启动一个应用程序(带有依赖项),当您点击ctrl+c 时,它会停止所有服务;

    docker-compose up app; docker-compose stop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多