Odoo ERP
Open-source ERP and business applications.
Overview
Odoo is a comprehensive open-source Enterprise Resource Planning (ERP) suite that began as TinyERP in 2005 and has evolved into one of the world's most popular business management platforms. It offers a modular approach to business applications, covering everything from CRM and sales to inventory management, accounting, manufacturing, and e-commerce, all within a unified web-based interface that can scale from small startups to large enterprises.
This Docker configuration pairs Odoo 17 with PostgreSQL 16, creating a robust business management platform where PostgreSQL's ACID compliance and advanced transaction support ensure data integrity across all business operations. PostgreSQL's excellent JSON support complements Odoo's flexible data models, while its sophisticated query capabilities handle complex business reporting and analytics that ERP systems demand. The combination leverages PostgreSQL's reliability for mission-critical business data while Odoo provides the comprehensive application layer.
This stack is ideal for businesses wanting to deploy a complete ERP solution without vendor lock-in, developers building custom business applications on Odoo's framework, and organizations requiring integrated business processes with strong data consistency. The open-source nature of both components makes this particularly valuable for companies wanting full control over their business systems while benefiting from enterprise-grade database performance and ERP functionality.
Key Features
- Modular ERP architecture with 30+ official apps including CRM, Sales, Inventory, Accounting, Manufacturing, and Website Builder
- Multi-company and multi-currency support with advanced financial consolidation and reporting
- Integrated e-commerce platform with product catalog management, payment processing, and inventory synchronization
- Advanced PostgreSQL JSON/JSONB support for flexible custom fields and metadata storage in business records
- Built-in workflow engine and approval processes for purchase orders, expenses, and document management
- Comprehensive reporting with PostgreSQL's window functions enabling complex business analytics and KPI dashboards
- Real-time inventory tracking with barcode scanning, lot/serial number management, and automated reordering
- Project management with timesheet integration, task dependencies, and resource planning
Common Use Cases
- 1Small to medium businesses implementing their first integrated ERP system to replace spreadsheets and disconnected tools
- 2E-commerce companies needing unified inventory, order management, and accounting across multiple sales channels
- 3Manufacturing companies requiring production planning, bill of materials management, and quality control tracking
- 4Service businesses managing projects, timesheets, invoicing, and customer relationships in one platform
- 5Retail operations needing point-of-sale integration with inventory management and customer loyalty programs
- 6Growing startups requiring scalable business processes and financial controls as they expand
- 7Organizations with complex approval workflows for purchasing, expenses, and document management
Prerequisites
- Minimum 4GB RAM recommended for production use (Odoo is memory-intensive with multiple modules)
- Port 8069 available for Odoo web interface access
- Basic understanding of ERP concepts like chart of accounts, inventory management, and business workflows
- PostgreSQL knowledge helpful for database maintenance, backups, and performance tuning
- Understanding of Odoo's module system if planning to install custom addons or community modules
- SSL certificate and reverse proxy setup recommended for production deployments with sensitive business data
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 odoo: 3 image: odoo:174 container_name: odoo5 restart: unless-stopped6 environment: 7 HOST: postgres8 USER: ${DB_USER}9 PASSWORD: ${DB_PASSWORD}10 volumes: 11 - odoo_data:/var/lib/odoo12 - odoo_addons:/mnt/extra-addons13 ports: 14 - "8069:8069"15 depends_on: 16 - postgres17 networks: 18 - odoo1920 postgres: 21 image: postgres:16-alpine22 container_name: odoo-postgres23 environment: 24 POSTGRES_USER: ${DB_USER}25 POSTGRES_PASSWORD: ${DB_PASSWORD}26 POSTGRES_DB: postgres27 volumes: 28 - postgres_data:/var/lib/postgresql/data29 networks: 30 - odoo3132volumes: 33 odoo_data: 34 odoo_addons: 35 postgres_data: 3637networks: 38 odoo: 39 driver: bridge.env Template
.env
1DB_USER=odoo2DB_PASSWORD=changemeUsage Notes
- 1Docs: https://www.odoo.com/documentation/
- 2Access at http://localhost:8069 - create database on first visit
- 3Master password in first setup, then create company database
- 4Install apps: CRM, Sales, Inventory, Accounting, eCommerce, etc.
- 5Community edition free, Enterprise requires license
- 6Custom modules in /mnt/extra-addons, restart to load
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
odoo
odoo:
image: odoo:17
container_name: odoo
restart: unless-stopped
environment:
HOST: postgres
USER: ${DB_USER}
PASSWORD: ${DB_PASSWORD}
volumes:
- odoo_data:/var/lib/odoo
- odoo_addons:/mnt/extra-addons
ports:
- "8069:8069"
depends_on:
- postgres
networks:
- odoo
postgres
postgres:
image: postgres:16-alpine
container_name: odoo-postgres
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- odoo
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 odoo:5 image: odoo:176 container_name: odoo7 restart: unless-stopped8 environment:9 HOST: postgres10 USER: ${DB_USER}11 PASSWORD: ${DB_PASSWORD}12 volumes:13 - odoo_data:/var/lib/odoo14 - odoo_addons:/mnt/extra-addons15 ports:16 - "8069:8069"17 depends_on:18 - postgres19 networks:20 - odoo2122 postgres:23 image: postgres:16-alpine24 container_name: odoo-postgres25 environment:26 POSTGRES_USER: ${DB_USER}27 POSTGRES_PASSWORD: ${DB_PASSWORD}28 POSTGRES_DB: postgres29 volumes:30 - postgres_data:/var/lib/postgresql/data31 networks:32 - odoo3334volumes:35 odoo_data:36 odoo_addons:37 postgres_data:3839networks:40 odoo:41 driver: bridge42EOF4344# 2. Create the .env file45cat > .env << 'EOF'46DB_USER=odoo47DB_PASSWORD=changeme48EOF4950# 3. Start the services51docker compose up -d5253# 4. View logs54docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/odoo/run | bashTroubleshooting
- Database creation fails with 'connection refused': Ensure PostgreSQL container is fully started before Odoo attempts connection, add healthcheck or delay
- Odoo web interface shows 'Internal Server Error': Check container logs for Python tracebacks, often related to missing database or incorrect environment variables
- Custom addons not loading: Verify addon files are properly mounted in /mnt/extra-addons volume and restart Odoo container after adding modules
- Performance issues with large datasets: Tune PostgreSQL memory settings in postgresql.conf and consider database indexing for custom fields
- Master password prompt keeps appearing: Set ODOO_MASTER_PASSWORD environment variable or configure admin_passwd in odoo.conf file
- Module installation fails: Check addon dependencies and ensure all required Python packages are available in the Odoo container
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
Shortcuts: C CopyF FavoriteD Download