docker-compose:在 docker-compose.yml 中运行后自动删除容器的选项

docker-compose:在 docker-compose.yml 中运行后自动删除容器的选项

docker-compose run参考表示它有权--rm选择

运行后移除容器。

我想将此run作为我在中指定的某些服务的默认行为docker-compose.yml

因此,问题是

  1. 可以以某种方式指定吗docker-compose.yml
  2. 如果可以,我该怎么做?

INB4“使用 bash 别名,卢克!”:当然,我可以docker-compose.yml通过设置一些 bash 别名来强制执行这一点alias docker-compose-run='docker-compose run --rm',但我感兴趣的是如何通过docker-compose.yml而不是通过某种外部方式来强制执行这一点。)

答案1

TLDR:这是仍然不可能 2018-11;使用docker-compose downdocker-compose run --rm

我想对这个问题给出一个更新的答案,因为已经快 3 年了。这将节省其他人的搜索时间。

我有同样的问题,以下是我找到的解决方法(包括问题本身的解决方法):

docker-compose down

其作用如下:

停止容器并删除由 up 创建的容器、网络、卷和图像。

默认情况下,唯一删除的是:

- Containers for services defined in the Compose file
- Networks defined in the networks section of the Compose file
- The default network, if one is used

定义为外部的网络和卷永远不会被删除。

尽管你不能在其中声明它,但docker-compose.yml它可以为你省去一些麻烦;特别是在卷和网络方面。

docker-compose run --rm

--rm - 运行后删除容器。在分离模式下忽略。

针对服务运行一次性命令。例如,以下命令启动 Web 服务并运行 bash 作为其命令。

docker-compose run web bash

[...] 运行传递的命令覆盖服务中定义的命令 配置。

[...] 命令不创建任何端口在服务配置中指定。这可以防止与已打开的端口发生端口冲突。如果你确实希望创建服务的端口并映射到主机,指定--服务端口旗帜

docker-compose rm -f

-f, --force 不要求确认删除

答案2

它不是Dockerfiledocker-compose.yml规范的一部分,它只是运行命令的 cli 选项,所以答案是否定的。您需要依赖一些外部的东西来执行。

如果您的项目有构建工具,通常最好用它来包装 docker-compose 任务。例如,我们的 gradle 项目提供了与 docker 相关的任务,这些任务设置了一些默认选项,例如--rm运行任务。

相关内容