В docker-compose run
ссылка заявляет, что имеет --rm
возможность
Снимите контейнер после запуска.
Я хочу сделать это по умолчанию run
поведение некоторых служб, которые я указываю в docker-compose.yml
.
Итак, вопросы:
docker-compose.yml
?(INB4 "Используйте псевдонимы bash, Люк!": Конечно, я могу применить это за пределами docker-compose.yml
установив псевдоним bash, например alias docker-compose-run='docker-compose run --rm'
но меня интересует, как я могу добиться этого с помощью docker-compose.yml
, а не каким-то внешним образом.)
TL; DR: это все еще невозможно 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 для команды запуска, поэтому ответ - нет. Для принуждения вам нужно будет полагаться на что-то внешнее.
Если у вас есть какой-то инструмент сборки для вашего проекта, обычно лучше обернуть им задачи docker-compose. Например, наши проекты Gradle предоставляют задачи, связанные с докерами, которые устанавливают некоторые параметры по умолчанию, такие как --rm
для выполнения задач.