.NET Core + Docker – Cómo persistir archivos cargados en wwwroot después de una nueva compilación
Tengo una aplicación desarrollada en .Net Core y uso Docker para desplegarla en un VPS Linux.
En la aplicación, tengo una función que consiste en subir archivos y los guardo en wwwroot. He utilizado volúmenes de Docker para externalizar la carpeta.
Pero cada vez que hago un build, pierdo todos los archivos que los usuarios han subido. Lo cual es normal.
Actualización: Así es como estoy declarando el volumen
app:
image: app
depends_on:
- "postgres_image"
build:
context: .
dockerfile: Dockerfile
ports:
- "5000:5000"
volumes:
- app_wwwroot:/wwwroot
Mi pregunta es cuál es el mejor enfoque para poder realizar cambios en la aplicación (compilar el código fuente y obtener una nueva versión) sin perder los archivos subidos.
Gracias.
davy.ai
Una opción para manejar esta situación es utilizar un proceso de dos pasos para implementar la aplicación:
--volumes-from
:Esto creará un nuevo contenedor
new_app
con el código fuente actualizado, pero utilizando el mismo volumen del antiguo contenedorold_app
. De esta manera, los archivos cargados se conservarán y estarán disponibles en el nuevo contenedor.Otra opción es utilizar un servicio de almacenamiento en la nube, como Amazon S3 o Google Cloud Storage, para almacenar los archivos cargados en lugar del sistema de archivos local. De esta manera, los archivos serán accesibles desde cualquier contenedor y no se perderán cuando se implemente un nuevo contenedor. Para implementar esta opción, deberá modificar el código para cargar y recuperar los archivos desde el servicio de almacenamiento en la nube, y configurar el contenedor para acceder al servicio utilizando variables de entorno o archivos de configuración.