Как удалить анонимные тома при выходе с помощью docker-compose - PullRequest
0 голосов
/ 20 мая 2019

У меня есть файл docker-compose, который я использую для запуска интеграционных тестов. Он установлен на --exit-code-from сервис тестирования, поэтому, когда тесты завершены, все контейнеры останавливаются. В тесте участвует служба базы данных. Это создает анонимный объем. Поскольку это тесты, я не хочу хранить базу данных между прогонами. Если бы я использовал docker-compose down, я мог бы использовать -v (в документе сказано, что он удаляет именованные тома; возможно, он работает и для анонимных томов?) Итак, мой вопрос, как я могу сказать docker-compose up удалить анонимные тома при выходе?

1 Ответ

1 голос
/ 20 мая 2019

Документы docker-compose up имеют флаг, который выглядит многообещающе:

-V, --renew-anon-volumes   Recreate anonymous volumes instead of retrieving
                           data from the previous containers.

И получается, что это работает.Если вы добавите флаг, база данных будет «перестраиваться» на каждом up.Я не думаю, что это на самом деле удаляет громкость на выходе.Но это решает основную проблему, связанную с желанием нового экземпляра базы данных при каждом запуске тестов.

Последняя команда выглядит следующим образом:

docker-compose -f docker-compose.test.yml up --renew-anon-volumes --abort-on-container-exit --exit-code-from test

ПРИМЕЧАНИЕ. Старый контейнер базы данныханонимные тома не удаляются (даже при запуске, обновляющем анонимные тома).Поэтому вам придется время от времени удалять их (например, docker volume prune).

Еще одно решение, благодаря комментарию @ BMitch по этому вопросу, состоит в том, чтобы просто запустить docker-compose down -v после выхода из docker-compose up (выможет по-прежнему сбрасывать остановленные контейнеры, поскольку они не были удалены).Это фактически удалит анонимный том при выходе.Я не уверен, как бы вы это сделали, если у вас есть -d, но так как я не использую этот флаг (я хочу увидеть выполнение тестов), эта команда работает:

docker-compose -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from test; docker-compose -f docker-compose.test.yml down -v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...