# Important Concept: Immutability and Persistence

A frequent source of confusion is how **Docker-based Frappe deployments handle persistence**.

### Containers Are Immutable

Docker containers are **not meant to be modified after they are built**.
You should only change:

- Environment variables
- Mounted volumes
- The Docker image itself (via rebuild)

### What Is Persistent

Typically, only these paths are persisted:

- Site data (`/sites`)
- Database storage

This allows you to:

- Create new sites
- Run migrations
- Perform backups and restores
- Recreate containers safely

## Installing Apps After Deployment

### ❌ Not Supported

Installing apps into a running container is **not supported**.

`bench get-app` is an examples of an common but unsupported action.

### Why?

- Apps are part of the **Docker image**
- Runtime changes are lost on container recreation
- This ensures reproducibility and stability

### Correct Workflow

1. Add the app to the image build configuration
2. Rebuild the Docker image
3. Redeploy the stack

This applies to **all production-oriented setups**.