Appearance
Choosing a Deployment or Development Method โ
This repository (frappe_docker) supports multiple ways to run Frappe using Docker. Each method is designed for a specific purpose, and they are not interchangeable.
This document explains:
- All supported ways to use this repository
- Which method to choose depending on your goal
- Common misconceptions, especially around persistence and app installation
Reading this document before following any setup guide is strongly recommended.
Overview โ
| Goal | Recommended Method | Production Ready |
|---|---|---|
| Quick exploration | pwd.yml | โ |
| Local development | VS Code Devcontainers | โ |
| Automated production install | Easy Install Script | โ |
| Manual production deployment | compose.yml + overrides | โ |
1. pwd.yml โ Quick Test / Exploration Setup โ
The pwd.yml file is a single, self-contained Docker Compose file intended for:
- Trying out Frappe and ERPNext
- Demos and short-lived test environments
- Learning the basics without setup overhead
Characteristics โ
- One Compose file
- Minimal configuration
- Fast startup
- Disposable by design
Limitations โ
- โ Not intended for production
- โ Not intended for development
- โ Not suitable as a migration starting point
If you start with pwd.yml, you should expect to throw the environment away.
2. VS Code Devcontainers โ Local Development Setup โ
The development setup described in /docs/05-development/development.md
uses VS Code Devcontainers to provide a local Frappe development environment.
Intended Use โ
- Developing Frappe or custom apps
- Working with source code
- Debugging and testing changes locally
Key Differences from Other Setups โ
- Optimized for interactive development
- Code is editable live
- Containers are tailored for developer workflows
- Not designed to represent a production environment
Important Notes โ
- โ Not a deployment method
- โ Not intended for production
- โ The correct way to do local development with this repository
Using production-oriented setups (pwd.yml or compose.yml) for development is strongly discouraged.
3. Easy Install Script (from frappe/bench) โ
The Easy Install script provided in the frappe/bench repository uses frappe_docker internally and automates a full deployment process.
It is comparable to what a deployment pipeline would perform.
What It Does โ
- Installs Docker and prerequisites
- Pulls and configures
frappe_docker - Uses production-grade images and services
- Reduces manual configuration
Intended Use โ
- Production environments
- Users who want a guided, automated installation
- Server deployments with minimal manual steps
Production Readiness โ
โ Yes โ suitable for real production systems โ Uses the same components as the manual production setup
4. compose.yml + Overrides โ Intended Production Setup โ
This is the canonical production deployment method for frappe_docker.
It uses:
- The main
compose.yml - Override files from the
overrides/directory
Detailed instructions are available in /docs/02-setup
Characteristics โ
- Explicit service definitions
- Flexible and configurable
- Designed for long-running production environments
- Suitable for advanced and customized deployments
This is the preferred approach for teams managing their own infrastructure.
Summary โ
- Each setup serves a distinct purpose
- Development, testing, and production are separate workflows
- Do not expect to evolve a disposable setup into production
- Apps must be included at build time, not installed later (Docker immutability)