docker.recipes

ERPNext

advanced

Full-featured open-source ERP system.

Overview

ERPNext is a comprehensive open-source Enterprise Resource Planning (ERP) system built on the Frappe framework, designed to handle all aspects of business operations from accounting and HR to manufacturing and project management. Originally developed by Frappe Technologies in India, ERPNext has grown into one of the most feature-complete open-source ERP solutions available, offering modules for accounting, inventory management, CRM, human resources, manufacturing, asset management, and project tracking. This Docker stack combines ERPNext with MariaDB as the primary database backend and Redis for caching and queue management, creating a robust three-tier architecture optimized for business operations. MariaDB provides the transactional reliability needed for financial data and business records, while Redis handles session management, real-time notifications, and background job queues that power ERPNext's workflow automation. This configuration is ideal for small to medium-sized businesses looking to implement a complete ERP solution, development teams building custom business applications on the Frappe framework, or organizations migrating from proprietary ERP systems to an open-source alternative that can be fully customized and extended.

Key Features

  • Complete business suite with 15+ integrated modules including accounting, inventory, HR, manufacturing, and CRM
  • Frappe framework foundation enabling custom app development and workflow automation
  • MariaDB backend with Aria storage engine optimized for business transaction processing
  • Redis-powered real-time notifications and background job processing for workflow automation
  • Multi-company and multi-currency support with automated exchange rate updates
  • Role-based permissions system with granular access control for business data
  • Built-in REST API and webhook system for third-party integrations
  • Responsive web interface with offline-capable Progressive Web App features

Common Use Cases

  • 1Small to medium manufacturing companies needing integrated production planning and inventory management
  • 2Service-based businesses requiring project management with time tracking and billing integration
  • 3Retail operations needing point-of-sale integration with inventory and accounting systems
  • 4Growing startups transitioning from spreadsheets to integrated business management software
  • 5Educational institutions managing student records, fee collection, and academic planning
  • 6Non-profit organizations tracking donors, grants, and program management
  • 7Development agencies building custom ERP solutions for clients on the Frappe framework

Prerequisites

  • Minimum 4GB RAM (8GB+ recommended for production environments with multiple users)
  • Docker and Docker Compose installed with adequate storage for business data growth
  • Port 8080 available for ERPNext web interface access
  • Basic understanding of ERP concepts and business process workflows
  • MariaDB administration knowledge for backup and maintenance procedures
  • Familiarity with Frappe bench commands for site management and app installation

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 erpnext:
3 image: frappe/erpnext:latest
4 container_name: erpnext
5 restart: unless-stopped
6 environment:
7 DB_HOST: mariadb
8 DB_PORT: 3306
9 REDIS_CACHE: redis://redis:6379/0
10 REDIS_QUEUE: redis://redis:6379/1
11 SOCKETIO_PORT: 9000
12 volumes:
13 - erpnext_sites:/home/frappe/frappe-bench/sites
14 ports:
15 - "8080:8080"
16 depends_on:
17 - mariadb
18 - redis
19 networks:
20 - erpnext
21
22 mariadb:
23 image: mariadb:10.6
24 container_name: erpnext-mariadb
25 environment:
26 MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
27 volumes:
28 - mariadb_data:/var/lib/mysql
29 networks:
30 - erpnext
31
32 redis:
33 image: redis:alpine
34 container_name: erpnext-redis
35 networks:
36 - erpnext
37
38volumes:
39 erpnext_sites:
40 mariadb_data:
41
42networks:
43 erpnext:
44 driver: bridge

.env Template

.env
1DB_ROOT_PASSWORD=changeme

Usage Notes

  1. 1Docs: https://frappeframework.com/docs/, https://docs.erpnext.com/
  2. 2Access at http://localhost:8080 after bench setup
  3. 3Initialize: bench new-site site1.local, bench install-app erpnext
  4. 4Modules: accounting, HR, manufacturing, CRM, projects, assets
  5. 5Frappe framework underneath - extensible with custom apps
  6. 6Resource intensive: recommend 4GB+ RAM for production

Individual Services(3 services)

Copy individual services to mix and match with your existing compose files.

erpnext
erpnext:
  image: frappe/erpnext:latest
  container_name: erpnext
  restart: unless-stopped
  environment:
    DB_HOST: mariadb
    DB_PORT: 3306
    REDIS_CACHE: redis://redis:6379/0
    REDIS_QUEUE: redis://redis:6379/1
    SOCKETIO_PORT: 9000
  volumes:
    - erpnext_sites:/home/frappe/frappe-bench/sites
  ports:
    - "8080:8080"
  depends_on:
    - mariadb
    - redis
  networks:
    - erpnext
mariadb
mariadb:
  image: mariadb:10.6
  container_name: erpnext-mariadb
  environment:
    MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
  volumes:
    - mariadb_data:/var/lib/mysql
  networks:
    - erpnext
redis
redis:
  image: redis:alpine
  container_name: erpnext-redis
  networks:
    - erpnext

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 erpnext:
5 image: frappe/erpnext:latest
6 container_name: erpnext
7 restart: unless-stopped
8 environment:
9 DB_HOST: mariadb
10 DB_PORT: 3306
11 REDIS_CACHE: redis://redis:6379/0
12 REDIS_QUEUE: redis://redis:6379/1
13 SOCKETIO_PORT: 9000
14 volumes:
15 - erpnext_sites:/home/frappe/frappe-bench/sites
16 ports:
17 - "8080:8080"
18 depends_on:
19 - mariadb
20 - redis
21 networks:
22 - erpnext
23
24 mariadb:
25 image: mariadb:10.6
26 container_name: erpnext-mariadb
27 environment:
28 MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
29 volumes:
30 - mariadb_data:/var/lib/mysql
31 networks:
32 - erpnext
33
34 redis:
35 image: redis:alpine
36 container_name: erpnext-redis
37 networks:
38 - erpnext
39
40volumes:
41 erpnext_sites:
42 mariadb_data:
43
44networks:
45 erpnext:
46 driver: bridge
47EOF
48
49# 2. Create the .env file
50cat > .env << 'EOF'
51DB_ROOT_PASSWORD=changeme
52EOF
53
54# 3. Start the services
55docker compose up -d
56
57# 4. View logs
58docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/erpnext/run | bash

Troubleshooting

  • Site creation fails with database connection error: Ensure MariaDB container is fully started and DB_ROOT_PASSWORD environment variable is set correctly
  • ERPNext shows 'Redis connection failed' error: Verify Redis container is running and accessible on the configured ports 6379/0 and 6379/1
  • Bench commands not working after container restart: Re-run 'bench new-site' and 'bench install-app erpnext' commands to properly initialize the site
  • Performance issues with large datasets: Increase MariaDB memory allocation and enable Redis persistence for better caching performance
  • Module installation fails with permission errors: Check that erpnext_sites volume has proper ownership and the frappe user can write to the sites directory
  • Background jobs not processing: Restart the Redis container and verify REDIS_QUEUE connection string points to the correct Redis database index

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space