--- title: Docker Immutability --- # 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**.