我使用docker-compose开发django应用程序:我有一个相当简单的设置 - 一个用于Web服务的服务和一个用于数据库的服务。有时我需要通过docker运行manage.py命令。
我使用以下命令:
$ docker-compose run web ./manage.py migrate
效果很好。但问题是,即使命令完成,docker也会保留容器:
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
seeder_data_1 sh Exit 0
seeder_postgres_1 /docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
seeder_web_1 fab run_local Up 0.0.0.0:8000->8000/tcp
seeder_web_run_14 ./manage.py migrate Up
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61d3aee5bb39 seeder_web "./manage.py migrate" 4 minutes ago Restarting (2) 55 seconds ago seeder_web_run_14
85e91cb9383c seeder_web "fab run_local" 5 minutes ago Up 5 minutes 0.0.0.0:8000->8000/tcp seeder_web_1
565b01dedb7b postgres:latest "/docker-entrypoint.s" 5 minutes ago Up 5 minutes 0.0.0.0:5432->5432/tcp seeder_postgres_1
这很烦人:我不想拥有仅用于一个命令的大量僵尸容器。有没有办法在命令返回后如何自动结束机器?我知道我可以手动杀死但这有点烦人。
或者这背后有一些逻辑吗?
答案 0 :(得分:2)
听起来你想要--rm
的{{1}}标志:https://docs.docker.com/compose/reference/run/。已经提到过几次将它设为默认值(https://github.com/docker/compose/issues/2774和https://github.com/docker/compose/issues/943),但看起来它们都失去了动力。