docker-compose run
有一个标记--rm
,可在运行后自动删除容器。我想知道是否有一个与docker-compose.yml等效的配置用于特定服务,因为我在yml中获得的服务之一是一次性构建过程,它应该只输出编译文件并自行消失。
答案 0 :(得分:22)
我没有找到任何帮助您在docker-compose.yml
文件中定义此行为的选项,我认为解释如下:
docker-compose up
构建,(重新)创建,启动和附加服务的容器。
由于您构建了images
并且服务的containers
已经开始,您可以使用docker-compose stop
和docker-compose start
来启动/停止您的服务。这与docker-compose down
不同,后者:
停止容器并移除由
up
创建的容器,网络,卷和图像。
您要做的事情出现问题:
如果您docker-compose up
并且其中一个容器已完成其任务并被(自动)删除,则您再次无法docker-compose stop
和docker-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
?