Tengo un archivo docker-compose que uso para ejecutar pruebas de integración. Está configurado en --exit-code-from servicio de prueba, por lo que cuando se realizan las pruebas, todos los contenedores se detienen. Hay un servicio de base de datos involucrado en la prueba. Crea un volumen anónimo. Dado que estas son pruebas, no quiero mantener la base de datos entre ejecuciones. Si estuviera usando docker-compose down , podría usar -v (el documento dice que elimina los volúmenes con nombre; ¿quizás también funcione para volúmenes anónimos?). Entonces mi pregunta es, ¿cómo le digo a docker-compose up que elimine volúmenes anónimos al salir?
Los documentos docker-compose up tienen una bandera que parece prometedora:
-V, --renew-anon-volumes Recreate anonymous volumes instead of retrieving data from the previous containers. Y resulta que funciona. Si agrega la bandera, la base de datos se "reconstruye" en cada up . No creo que esto realmente elimine el volumen al salir. Pero resuelve el problema de raíz de querer una nueva instancia de la base de datos en cada ejecución de las pruebas.
El comando final se ve así:
docker-compose -f docker-compose.test.yml up --renew-anon-volumes --abort-on-container-exit --exit-code-from test NOTA: Los volúmenes anónimos del contenedor de la base de datos anterior no se eliminan (incluso en el inicio que renueva los volúmenes anónimos). Por lo tanto, tendría que eliminarlos ocasionalmente (por ejemplo docker volume prune ).
ACTUALIZAR (mejor solución)
Otra solución, gracias al comentario de @ BMitch sobre la pregunta, es simplemente ejecutar docker-compose down -v después de que docker-compose up salga (todavía puede bajar los contenedores detenidos porque no se han eliminado). Esto realmente eliminará el volumen anónimo al salir. No estoy seguro de cómo harías esto si -d , pero como no estoy usando ese indicador (quiero ver cómo se ejecutan las pruebas), este comando funciona:
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