Volúmenes persistentes
Actualizado el 27 de octubre de 2026
Volúmenes persistentes
Por defecto, el sistema de archivos de un servicio es efímero: cada redespliegue parte de la imagen recién construida, todo archivo escrito en ejecución desaparece. Un volumen persistente conecta un directorio duradero que sobrevive a los redespliegues y reinicios.
Añadir un volumen
En el panel del servicio, pestaña Volumes:
- Ruta de montaje: el directorio que ve tu aplicación (ej.
/app/uploads). - Tamaño: en GiB, según tu necesidad y los límites de tu plan.
El volumen se aprovisiona y se monta en el próximo arranque del contenedor. Todo lo que tu aplicación escriba bajo esa ruta se conserva.
Casos de uso
| Necesidad | Ruta típica |
|---|---|
| Subidas de usuarios | /app/uploads |
| Base de datos SQLite | /app/data |
| Contenido de un CMS (WordPress, Ghost) | montado automáticamente por las plantillas |
| Caché regenerable pero costosa | /app/cache |
// La aplicación simplemente escribe en la ruta montada
await fs.promises.writeFile("/app/uploads/avatar-42.png", buffer);
Lo que hay que saber
- El resto del sistema de archivos sigue siendo efímero: solo las rutas montadas persisten. No cuentes con nada más.
- Volumen y scaling: un volumen está asociado a una instancia. Si prevés pasar a varias réplicas, prefiere un almacenamiento compartido (base de datos, almacenamiento de objetos) para los datos accedidos por todas las instancias.
- El tamaño se elige al crearlo. Deja un poco de margen.
- Eliminación: eliminar un volumen borra definitivamente su contenido. Exporta antes lo que deba conservarse (mediante el terminal web, por ejemplo).
Bases de datos
Los servicios de tipo base de datos (PostgreSQL, MySQL…) ya están respaldados por un volumen persistente gestionado por la plataforma: nada que configurar, tus datos sobreviven de forma nativa a los reinicios.