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)

Edge Home Solutions - Professional ยท Reliable ยท Trusted