- Introduced `saas.plan` model to define subscription plans with limits and pricing. - Created `saas.restaurant` model to manage restaurant tenants, including database provisioning and subscription management. - Implemented views for managing SaaS plans and restaurant tenants, including tree and form views. - Added security access rights for the new models. - Developed a backup management view for database backups. - Updated menu structure to include new SaaS management options. - Added Docker and deployment configurations for PostgreSQL, Redis, and Odoo services. - Included scaling guide and backup scripts for production environments. - Enhanced theme with new images and layout adjustments.
109 lines
2.3 KiB
YAML
109 lines
2.3 KiB
YAML
version: "3.8"
|
|
|
|
services:
|
|
db:
|
|
image: postgres:15-alpine
|
|
container_name: dine360_saas_db
|
|
environment:
|
|
POSTGRES_DB: postgres
|
|
POSTGRES_USER: odoo
|
|
POSTGRES_PASSWORD: odoo_master_pass_2026
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
- ./postgresql.conf:/etc/postgresql/postgresql.conf
|
|
command: "postgres -c config_file=/etc/postgresql/postgresql.conf"
|
|
ports:
|
|
- "5432:5432"
|
|
restart: always
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U odoo"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: dine360_saas_redis
|
|
volumes:
|
|
- redisdata:/data
|
|
- ./redis.conf:/usr/local/etc/redis/redis.conf
|
|
command: "redis-server /usr/local/etc/redis/redis.conf"
|
|
ports:
|
|
- "6379:6379"
|
|
restart: always
|
|
|
|
pgbouncer:
|
|
image: edoburu/pgbouncer:latest
|
|
container_name: dine360_saas_pgbouncer
|
|
environment:
|
|
- DB_USER=odoo
|
|
- DB_PASSWORD=odoo_master_pass_2026
|
|
- DB_HOST=db
|
|
- DB_PORT=5432
|
|
- MAX_CLIENT_CONN=10000
|
|
- DEFAULT_POOL_SIZE=50
|
|
- MIN_POOL_SIZE=10
|
|
- POOL_MODE=transaction
|
|
ports:
|
|
- "6432:6432"
|
|
depends_on:
|
|
- db
|
|
restart: always
|
|
|
|
web:
|
|
image: odoo:17.0
|
|
container_name: dine360_saas_web
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
- pgbouncer
|
|
ports:
|
|
- "8069:8069"
|
|
- "8072:8072"
|
|
volumes:
|
|
- odoo_data:/var/lib/odoo
|
|
- ../addons:/mnt/extra-addons
|
|
environment:
|
|
- HOST=pgbouncer
|
|
- PORT=6432
|
|
- USER=odoo
|
|
- PASSWORD=odoo_master_pass_2026
|
|
command: >
|
|
odoo
|
|
--workers=9
|
|
--max-cron-threads=0
|
|
--db-filter=^%d$$
|
|
--proxy-mode
|
|
--limit-time-cpu=600
|
|
--limit-time-real=1200
|
|
--session-store=redis
|
|
restart: always
|
|
|
|
cron:
|
|
image: odoo:17.0
|
|
container_name: dine360_saas_cron
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
- pgbouncer
|
|
volumes:
|
|
- odoo_data:/var/lib/odoo
|
|
- ../addons:/mnt/extra-addons
|
|
environment:
|
|
- HOST=pgbouncer
|
|
- PORT=6432
|
|
- USER=odoo
|
|
- PASSWORD=odoo_master_pass_2026
|
|
command: >
|
|
odoo
|
|
--workers=0
|
|
--max-cron-threads=4
|
|
--db-filter=^%d$$
|
|
--proxy-mode
|
|
restart: always
|
|
|
|
volumes:
|
|
pgdata:
|
|
redisdata:
|
|
odoo_data:
|