Stateless Odoo 20 codespace blueprint for one-os-dev (port 18070, bind /mnt/one-os-dev)
This commit is contained in:
commit
6e28aba906
6 files changed
+588
No files matched your search
@@ -0,0 +1,80 @@
|
||||
FROM python:3.12-slim
|
||||
RUN cat > /usr/local/bin/init-odoo.sh <<'__INIT_EOF__'
|
||||
#!/bin/bash
|
||||
exec > /tmp/init.log 2>&1
|
||||
set -x
|
||||
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
apt-get update -qq
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
build-essential pkg-config \
|
||||
libpq-dev libpq5 \
|
||||
libxml2-dev libxslt1-dev \
|
||||
libldap2-dev libsasl2-dev \
|
||||
libjpeg-dev zlib1g-dev \
|
||||
libcurl4-openssl-dev libssl-dev libffi-dev \
|
||||
libxml2 libxslt1.1 libldap2 libsasl2-2 \
|
||||
libjpeg62-turbo zlib1g libcurl4 libssl3 libffi8 \
|
||||
fonts-noto-cjk node-less \
|
||||
>>/tmp/init.log 2>&1 || echo "[init] WARN: apt-get install had errors (continuing)"
|
||||
fi
|
||||
|
||||
ODOO_INSTALLED=0
|
||||
python3 -c "import odoo" 2>/dev/null && ODOO_INSTALLED=1
|
||||
|
||||
if [ "$ODOO_INSTALLED" = "0" ]; then
|
||||
echo "[init] Installing Odoo from /mnt/one-os-dev (first boot — this takes ~5 min)..."
|
||||
pip install --quiet --no-cache-dir --break-system-packages --upgrade pip wheel
|
||||
pip install --quiet --no-cache-dir --break-system-packages psycopg2-binary
|
||||
pip install --quiet --no-cache-dir --break-system-packages /mnt/one-os-dev
|
||||
if [ -s /mnt/one-os-dev/requirements.txt ]; then
|
||||
pip install --quiet --no-cache-dir --break-system-packages \
|
||||
-r /mnt/one-os-dev/requirements.txt
|
||||
fi
|
||||
echo "[init] Odoo install complete."
|
||||
else
|
||||
echo "[init] Odoo already installed; skipping pip install."
|
||||
fi
|
||||
|
||||
mkdir -p /etc/odoo /var/lib/odoo /var/log/odoo
|
||||
cat > /etc/odoo/odoo.conf <<EOF
|
||||
[options]
|
||||
admin_passwd = ${ADMIN_PASSWD:-admin}
|
||||
db_host = ${HOST}
|
||||
db_port = ${PORT:-5432}
|
||||
db_user = ${USER:-odoo}
|
||||
db_password = ${PASSWORD}
|
||||
dbfilter = .*
|
||||
list_db = True
|
||||
addons_path = /mnt/one-os-dev/addons,/mnt/one-os-dev/odoo/addons
|
||||
data_dir = /var/lib/odoo
|
||||
dev_mode = reload,qweb,assets,xml,werkzeug
|
||||
xmlrpc_port = 8069
|
||||
workers = 0
|
||||
log_level = info
|
||||
EOF
|
||||
|
||||
echo "[init] Waiting for postgres at ${HOST}:${PORT}..."
|
||||
for i in $(seq 1 30); do
|
||||
python3 -c "
|
||||
import socket, sys
|
||||
s = socket.socket()
|
||||
s.settimeout(2)
|
||||
try:
|
||||
s.connect(('${HOST}', int('${PORT:-5432}')))
|
||||
sys.exit(0)
|
||||
except Exception:
|
||||
sys.exit(1)
|
||||
" && break || sleep 2
|
||||
done
|
||||
|
||||
echo "[init] Starting Odoo with --dev=reload (live edits auto-apply)..."
|
||||
exec odoo -c /etc/odoo/odoo.conf \
|
||||
--dev=reload,qweb,assets,xml,werkzeug \
|
||||
--db-filter='.*' \
|
||||
--limit-time-real=120 \
|
||||
--log-level=info
|
||||
__INIT_EOF__
|
||||
RUN chmod +x /usr/local/bin/init-odoo.sh
|
||||
ENTRYPOINT ["/usr/local/bin/init-odoo.sh"]
|
||||
CMD []
|
||||
Reference in new issue
Block a user