Документы 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