Skip to content

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

GoalRecommended MethodProduction Ready
Quick explorationpwd.yml
Local developmentVS Code Devcontainers
Automated production installEasy Install Script
Manual production deploymentcompose.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)