Skip to content

shridarpatil/frappe-docker

Repository files navigation

frappe-docker

Dockerizing frappe for development and production

Prerequisites

Quick Start

# Clone the repo
git clone git@github.com:shridarpatil/frappe-docker.git
cd frappe-docker

# Pull docker image
docker pull shridh0r/frappe:develop

# Start in dev mode (with logs)
./bench-docker up --dev

# Create a new site
./bench-docker shell
bench new-site site1.local --force --db-root-password root
bench build

CLI Usage

Use ./bench-docker to manage containers:

Start Containers

./bench-docker up                     # Start detached (MariaDB)
./bench-docker up --dev               # Dev mode with logs (foreground)
./bench-docker up --postgres          # Use PostgreSQL instead of MariaDB
./bench-docker up --workers           # Include background workers + scheduler
./bench-docker up --socketio          # Include socketio
./bench-docker up --prod              # Production (all services)
./bench-docker up --dev --workers     # Dev mode with workers
./bench-docker up --dev --postgres    # Dev mode with PostgreSQL

Other Commands

./bench-docker down                   # Stop all containers
./bench-docker restart                # Restart containers
./bench-docker logs                   # Follow web-app logs
./bench-docker shell                  # Open bash in web-app container
./bench-docker bench migrate          # Run bench commands
./bench-docker bench build            # Build assets
./bench-docker list-apps              # Show installed apps
./bench-docker help                   # Show all commands

Adding a New App

No need to edit docker-compose.yml - apps are auto-discovered!

Create a new app

./bench-docker new-app my_custom_app
./bench-docker up --dev
./bench-docker bench --site site1.local install-app my_custom_app

Get an existing app from git

./bench-docker get-app https://github.com/frappe/erpnext
# Or with a specific branch
./bench-docker get-app https://github.com/frappe/erpnext version-15

./bench-docker up --dev
./bench-docker bench --site site1.local install-app erpnext

Services

Service Profile Description
web-app (always) Main Frappe web server
redis (always) Cache and queue backend
mariadb --mariadb (default) MariaDB database
postgres --postgres PostgreSQL database
nginx (always) Reverse proxy
default-worker --workers Background job worker (default queue)
long-worker --workers Background job worker (long queue)
short-worker --workers Background job worker (short queue)
scheduler --workers Job scheduler
socketio --socketio Real-time updates

Building Custom Image

docker-compose build

Build Args

Arg Description
FRAPPE_PATH Frappe repo URL
FRAPPE_BRANCH Frappe branch name
FRAPPE_PYTHON Python version
BENCH_PATH Bench repo URL
BENCH_BRANCH Bench branch name

Example:

docker-compose build \
  --build-arg FRAPPE_PATH=https://github.com/zerodhatech/frappe.git \
  --build-arg FRAPPE_BRANCH=zero_v12

Create Site

# Start with MariaDB (default)
./bench-docker up --dev
./bench-docker shell
bench new-site site1.local --force --db-root-password root

# OR start with PostgreSQL
./bench-docker up --dev --postgres
./bench-docker shell
bench new-site site1.local --force --db-type postgres --db-host postgres --db-root-username postgres --db-root-password root

Project Structure

frappe-docker/
├── apps/                    # App source code (auto-mounted)
│   ├── frappe/
│   └── your_app/
├── sites/
│   ├── apps.txt             # List of apps to install
│   ├── apps.json            # App metadata
│   └── site1.local/         # Site data
├── docker-compose.yml       # Service definitions
├── bench-docker             # CLI wrapper
├── Makefile                 # Build automation
└── run.sh                   # Container startup script

Packages

 
 
 

Contributors