{ "_comment": "Stateless Odoo 19 hot-reload dev stack \u2014 onebspace project. Uses source.type=dockerfile (inline Dockerfile build) so Easypanel builds the image in-place on every deploy. The Dockerfile.inline file is auto-generated from os-dev/Dockerfile + COPY files. Deploy: python3 deploy.py deploy", "name": "Odoo 19 Dev (live hot-reload)", "projectName": "onebspace", "schema": { "services": [ { "type": "postgres", "data": { "serviceName": "odoo-dev-db", "image": "postgres:17", "databaseName": "postgres", "user": "odoo", "password": "CHANGE_ME_DB_PASSWORD", "exposedPort": 0, "pgWeb": { "enabled": true }, "resources": { "memoryReservation": 256, "memoryLimit": 1024, "cpuReservation": 0.25, "cpuLimit": 1 } } }, { "type": "app", "data": { "serviceName": "odoo-dev", "source": { "type": "dockerfile", "dockerfile": "" }, "env": "HOST=$(PROJECT_NAME)_odoo-dev-db\nPORT=5432\nUSER=odoo\nPASSWORD=CHANGE_ME_DB_PASSWORD\nADMIN_PASSWD=admin", "ports": [ { "protocol": "tcp", "published": 18069, "target": 8069 } ], "domains": [ { "host": "$(EASYPANEL_DOMAIN)", "port": 8069, "https": true, "path": "/" } ], "mounts": [ { "type": "bind", "hostPath": "/root/Documents/trae_projects/one_b_os/os-dev", "mountPath": "/mnt/os-dev" }, { "type": "volume", "name": "odoo-filestore", "mountPath": "/var/lib/odoo" }, { "type": "file", "content": "[options]\naddons_path = /mnt/os-dev/addons,/mnt/os-dev/odoo/addons,/usr/lib/python3/dist-packages/odoo/addons\ndata_dir = /var/lib/odoo\ndev_mode = reload,qweb,assets,xml,werkzeug\nxmlrpc_port = 8069\nworkers = 0\nadmin_passwd = admin\nlog_level = info\ndbfilter = .*\nlist_db = True\n", "mountPath": "/etc/odoo/odoo.conf" } ], "deploy": { "command": "odoo --addons-path=/mnt/os-dev/addons,/mnt/os-dev/odoo/addons --dev=reload,qweb,assets,xml,werkzeug --db-filter=.* --limit-time-real=120 --log-level=info", "replicas": 1, "zeroDowntime": false }, "resources": { "memoryReservation": 512, "memoryLimit": 2048, "cpuReservation": 0.5, "cpuLimit": 2 } } } ] } }