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, а не каким-то внешним образом.)

ДВУ: Это все еще невозможно 2018-11; использовать docker-compose down или docker-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 - Удалить контейнер после запуска. Игнорируется в отключенном режиме.

Выполняет одноразовую команду для службы. Например, следующая команда запускает веб-службу и запускает bash в качестве ее команды.

docker-compose run web bash

[...] команда, переданная с помощью run переопределяет команду, определенную в службе конфигурация.

[...] команда не создает ни один из портов указанный в конфигурации службы. Это предотвращает коллизии портов с уже открытыми портами. Если вы действительно хотите, чтобы порты службы были созданы и сопоставленный с хостом, укажите --сервис-порты флаг

docker-compose rm -f

-f, --force Не запрашивать подтверждение удаления

Это не часть Dockerfile или docker-compose.yml spec, это всего лишь опция cli для команды run, поэтому ответ отрицательный. Вам нужно будет полагаться на что-то внешнее для обеспечения соблюдения.

Если у вас есть какой-то инструмент сборки для вашего проекта, обычно лучше всего использовать его для выполнения задач docker-compose. Например, наши проекты gradle предоставляют задачи, связанные с docker, которые устанавливают некоторые параметры по умолчанию, такие как --rm для выполнения задач.