75 lines
4.6 KiB
JSON
75 lines
4.6 KiB
JSON
{
|
|
"name": "one-os-dev-codespace (stateless hot-reload workspace)",
|
|
"projectName": "onebspace",
|
|
"schema": {
|
|
"services": [
|
|
{
|
|
"type": "postgres",
|
|
"data": {
|
|
"serviceName": "one-os-dev-codespace-db",
|
|
"image": "postgres:17",
|
|
"databaseName": "postgres",
|
|
"user": "odoo",
|
|
"password": "3eqZETeQmn9otDLnLfILYlpR",
|
|
"exposedPort": 0,
|
|
"pgWeb": {
|
|
"enabled": true
|
|
},
|
|
"dbGate": {
|
|
"enabled": true
|
|
},
|
|
"resources": {
|
|
"memoryReservation": 256,
|
|
"memoryLimit": 1024,
|
|
"cpuReservation": 0.25,
|
|
"cpuLimit": 1
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "app",
|
|
"data": {
|
|
"serviceName": "one-os-dev-codespace",
|
|
"source": {
|
|
"type": "dockerfile",
|
|
"dockerfile": "FROM python:3.12-slim\nRUN cat > /usr/local/bin/init-odoo.sh <<'__INIT_EOF__'\n#!/bin/bash\nexec > /tmp/init.log 2>&1\nset -x\n\nif command -v apt-get >/dev/null 2>&1; then\n apt-get update -qq\n DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \\\n build-essential pkg-config \\\n libpq-dev libpq5 \\\n libxml2-dev libxslt1-dev \\\n libldap2-dev libsasl2-dev \\\n libjpeg-dev zlib1g-dev \\\n libcurl4-openssl-dev libssl-dev libffi-dev \\\n libxml2 libxslt1.1 libldap2 libsasl2-2 \\\n libjpeg62-turbo zlib1g libcurl4 libssl3 libffi8 \\\n fonts-noto-cjk node-less \\\n >>/tmp/init.log 2>&1 || echo \"[init] WARN: apt-get install had errors (continuing)\"\nfi\n\nODOO_INSTALLED=0\npython3 -c \"import odoo\" 2>/dev/null && ODOO_INSTALLED=1\n\nif [ \"$ODOO_INSTALLED\" = \"0\" ]; then\n echo \"[init] Installing Odoo from /mnt/one-os-dev (first boot \u2014 this takes ~5 min)...\"\n pip install --quiet --no-cache-dir --break-system-packages --upgrade pip wheel\n pip install --quiet --no-cache-dir --break-system-packages psycopg2-binary\n pip install --quiet --no-cache-dir --break-system-packages /mnt/one-os-dev\n if [ -s /mnt/one-os-dev/requirements.txt ]; then\n pip install --quiet --no-cache-dir --break-system-packages \\\n -r /mnt/one-os-dev/requirements.txt\n fi\n echo \"[init] Odoo install complete.\"\nelse\n echo \"[init] Odoo already installed; skipping pip install.\"\nfi\n\nmkdir -p /etc/odoo /var/lib/odoo /var/log/odoo\ncat > /etc/odoo/odoo.conf <<EOF\n[options]\nadmin_passwd = ${ADMIN_PASSWD:-admin}\ndb_host = ${HOST}\ndb_port = ${PORT:-5432}\ndb_user = ${USER:-odoo}\ndb_password = ${PASSWORD}\ndbfilter = .*\nlist_db = True\naddons_path = /mnt/one-os-dev/addons,/mnt/one-os-dev/odoo/addons\ndata_dir = /var/lib/odoo\ndev_mode = reload,qweb,assets,xml,werkzeug\nxmlrpc_port = 8069\nworkers = 0\nlog_level = info\nEOF\n\necho \"[init] Waiting for postgres at ${HOST}:${PORT}...\"\nfor i in $(seq 1 30); do\n python3 -c \"\nimport socket, sys\ns = socket.socket()\ns.settimeout(2)\ntry:\n s.connect(('${HOST}', int('${PORT:-5432}')))\n sys.exit(0)\nexcept Exception:\n sys.exit(1)\n\" && break || sleep 2\ndone\n\necho \"[init] Starting Odoo with --dev=reload (live edits auto-apply)...\"\nexec odoo -c /etc/odoo/odoo.conf \\\n --dev=reload,qweb,assets,xml,werkzeug \\\n --db-filter='.*' \\\n --limit-time-real=120 \\\n --log-level=info\n__INIT_EOF__\nRUN chmod +x /usr/local/bin/init-odoo.sh\nENTRYPOINT [\"/usr/local/bin/init-odoo.sh\"]\nCMD []\n"
|
|
},
|
|
"env": "HOST=$(PROJECT_NAME)_one-os-dev-codespace-db\nPORT=5432\nUSER=odoo\nPASSWORD=3eqZETeQmn9otDLnLfILYlpR\nADMIN_PASSWD=admin\nPYTHONUNBUFFERED=1\nPIP_DISABLE_PIP_VERSION_CHECK=1\n",
|
|
"ports": [
|
|
{
|
|
"protocol": "tcp",
|
|
"published": 18070,
|
|
"target": 8069
|
|
}
|
|
],
|
|
"domains": [
|
|
{
|
|
"host": "$(EASYPANEL_DOMAIN)",
|
|
"port": 8069,
|
|
"https": true,
|
|
"path": "/"
|
|
}
|
|
],
|
|
"mounts": [
|
|
{
|
|
"type": "bind",
|
|
"hostPath": "/root/Documents/trae_projects/one_b_os/one-os-dev",
|
|
"mountPath": "/mnt/one-os-dev"
|
|
},
|
|
{
|
|
"type": "volume",
|
|
"name": "one-os-dev-codespace-filestore",
|
|
"mountPath": "/var/lib/odoo"
|
|
}
|
|
],
|
|
"resources": {
|
|
"memoryReservation": 512,
|
|
"memoryLimit": 2048,
|
|
"cpuReservation": 0.5,
|
|
"cpuLimit": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
} |