使用docker-compose.yml自动删除容器

时间:2017-11-09 17:00:05

标签: docker docker-compose

docker-compose run有一个标记--rm,可在运行后自动删除容器。我想知道是否有一个与docker-compose.yml等效的配置用于特定服务,因为我在yml中获得的服务之一是一次性构建过程,它应该只输出编译文件并自行消失。

4 个答案:

答案 0 :(得分:22)

我没有找到任何帮助您在docker-compose.yml文件中定义此行为的选项,我认为解释如下:

  

docker-compose up构建,(重新)创建,启动和附加服务的容器。

由于您构建了images并且服务的containers已经开始,您可以使用docker-compose stopdocker-compose start来启动/停止您的服务。这与docker-compose down不同,后者:

  

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

您要做的事情出现问题:

如果您docker-compose up并且其中一个容器已完成其任务并被(自动)删除,则您再次无法docker-compose stopdocker-compose start。删除的容器将不会再次start

您可能需要查看:

答案 1 :(得分:2)

我不确定我理解,docker-compose run --user是一个选项,docker-compose.yml支持用户密钥(http://docs.docker.com/compose/yml/#working95dir-entrypoint-user-hostname-domainname-mem95limit-privileged-restart-stdin95open-tty-cpu95shares)。

答案 2 :(得分:1)

对此,我的解决方案是创建一个小的bash脚本,此脚本随后会自动删除容器-它不适用于分离模式,但我想这可能不是一个大问题。

如果您使用的是macOS,则可以将此脚本放入usr/local/bin中。假设它名为d-c,则可以运行chmod +x usr/local/bin/d-c使其可执行。 在Windows上,我不知道如何使它工作,但在Linux上,它应该是相似的。

#! /bin/bash

if [[ $1 == "up" ]]; then
    # runs "docker-compose up" and then "docker-compose down"
    docker-compose up "${@:2}"; docker-compose down
elif [[ $1 == "run" ]]; then
    # "d-c run" automatically adds the --rm flag
    docker-compose run --rm "${@:2}"
else
    # any other d-c command runs docker-compose normally
    docker-compose "${@:1}"
fi

答案 3 :(得分:1)

只需运行from tbltourns_atp t inner join stat_atp s on t.id_t = s.id_t group by t.id_ti ?

https://docs.docker.com/compose/reference/rm/