---
title: Persistent Volumes
category: Projects
description: Keep data across deployments with mounted Docker volumes.
slug: volumes
---

Containers are ephemeral: each new deployment replaces the old
container, and anything written to its local filesystem disappears with
it. Mount a **persistent volume** for uploads, caches, SQLite files, or
any data that must survive redeploys.

## Adding a volume

Open the project and switch to the **Volumes** tab, then click **Add
Volume**:

1. Enter the mount path inside the container (for example
   `/app/uploads`).
2. Save. Dequel creates a Docker volume on the deployment's server and
   records the mount.

Mount changes apply on the next container start. The tab shows a
redeploy banner after you add or delete a volume — click **Redeploy** to
roll it out. Deleting a volume unmounts it; the volume record can be
removed separately.

:::note[Volumes live on the deployment's server]
Volumes are created on whichever server runs the deployment. If you move
a project to another server (see [Servers](/docs/servers)), its data
does not move with it — plan a copy step for stateful moves.
:::

## Databases vs volumes

- Use a [managed database](/docs/databases) for structured data with
  querying, credentials, backups, and remote access.
- Use a volume for flat files your app reads and writes directly.

## Next steps

- Read [Managed Databases](/docs/databases) for the database option.
- Read [Backups](/docs/backups) for snapshot and restore flows.
