From d9019976545450c653a3a36d3c1c15aecd96e570 Mon Sep 17 00:00:00 2001 From: BadStorm Deeveloper Date: Sat, 28 Feb 2026 22:28:37 +0100 Subject: [PATCH] Add Odod --- Services/odoo/odoo-entrypoint.sh | 69 +++++++++++++++++++++++ Services/odoo/odoo.ContainerFile | 94 ++++++++++++++++++++++++++++++++ Services/odoo/odoo.container | 27 +++++++++ Services/postgres.README | 12 ++++ 4 files changed, 202 insertions(+) create mode 100644 Services/odoo/odoo-entrypoint.sh create mode 100644 Services/odoo/odoo.ContainerFile create mode 100644 Services/odoo/odoo.container create mode 100644 Services/postgres.README diff --git a/Services/odoo/odoo-entrypoint.sh b/Services/odoo/odoo-entrypoint.sh new file mode 100644 index 0000000..c4981fc --- /dev/null +++ b/Services/odoo/odoo-entrypoint.sh @@ -0,0 +1,69 @@ +#!/bin/bash +set -e + +# Valori di default +ADMIN_PASSWD="${ADMIN_PASSWD:-Password123}" +DB_HOST="${DB_HOST:-localhost}" +DB_PORT="${DB_PORT:-5432}" +DB_USER="${DB_USER:-odoo}" +DB_PASSWORD="${DB_PASSWORD:-odoo}" +DB_NAME="${DB_NAME:-}" +LIST_DB="True" + +# Se db_name è impostata, imposta list_db=false +if [ -n "$DB_NAME" ]; then + LIST_DB="False" +fi + +# Crea la directory di configurazione in /opt/odoo +mkdir -p /opt/odoo + +# Crea il file di configurazione Odoo con i valori delle variabili d'ambiente +cat > /opt/odoo/odoo.conf << EOF +[options] +; Server Configuration +admin_passwd = $ADMIN_PASSWD +db_host = $DB_HOST +db_port = $DB_PORT +db_user = $DB_USER +db_password = $DB_PASSWORD +db_name = $DB_NAME +list_db = $LIST_DB + +; File Paths +addons_path = /opt/odoo/odoo-server/addons,/opt/odoo/custom_addons +data_dir = /opt/odoo/data + +; Logging +log_file = /opt/odoo/odoo.log +log_level = info + +; Workers (optional, for production) +workers = 4 +gevent_port = 8072 + +; Other Settings +max_cron_threads = 2 +EOF + +# Attiva il virtual environment +source /opt/odoo/venv/bin/activate + +# Vai nella directory di Odoo +cd /opt/odoo/odoo-server + +# Se il file .odoo_initialized non esiste, inizializza il database e crea l'utente admin +if [ ! -f /opt/odoo/.odoo_initialized ]; then + echo "Inizializzazione del database..." + + # Inizializza il database + ./odoo-bin -c /opt/odoo/odoo.conf -i base --stop-after-init --without-demo + + # Crea il file di flag per indicare che l'inizializzazione è completata + touch /opt/odoo/.odoo_initialized + + echo "Database inizializzato." +fi + +# Avvia Odoo +exec ./odoo-bin -c /opt/odoo/odoo.conf diff --git a/Services/odoo/odoo.ContainerFile b/Services/odoo/odoo.ContainerFile new file mode 100644 index 0000000..377fd33 --- /dev/null +++ b/Services/odoo/odoo.ContainerFile @@ -0,0 +1,94 @@ +# syntax=docker/dockerfile:1.9 +# Build: podman build -t odoo:19-amd64 -f odoo.ContainerFile . +# Export: podman save -o /home/badstorm/odoo-19-amd64.tar localhost/odoo:19-amd64 +# Podman Containerfile for Odoo 19 + +# Use Debian Trixie as base +FROM debian:13-slim + +# Avoid interactive prompts during package installation +ENV DEBIAN_FRONTEND=noninteractive + +# Install system dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + python3 \ + python3-dev \ + python3-venv \ + libxml2-dev \ + libxslt1-dev \ + libjpeg-dev \ + libpng-dev \ + libopenjp2-7-dev \ + libtiff-dev \ + build-essential \ + libssl-dev \ + libffi-dev \ + libpq-dev \ + postgresql-client \ + libldap2-dev \ + libsasl2-dev \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Install wkhtmltopdf +RUN curl -sSL -o /tmp/wkhtmltox.deb "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb" \ + && apt-get update && apt-get install -y /tmp/wkhtmltox.deb \ + && rm -rf /var/lib/apt/lists/* /tmp/wkhtmltox.deb + +# Create odoo user +RUN useradd -m -d /opt/odoo -U -r -s /bin/bash odoo + +# Create necessary directories +RUN mkdir -p /opt/odoo/custom_addons \ + && mkdir -p /opt/odoo/data \ + && mkdir -p /opt/odoo/data/filestore \ + && mkdir -p /opt/odoo/log \ + && chown -R odoo:odoo /opt/odoo \ + && chown -R odoo:odoo /opt/odoo/log \ + && chmod -R 755 /opt/odoo \ + && chmod -R 775 /opt/odoo/data \ + && chmod -R 775 /opt/odoo/log + +# Clone Odoo repository +WORKDIR /opt/odoo +RUN git clone https://github.com/odoo/odoo.git --depth 1 --branch 19.0 odoo-server + +# Create virtual environment +RUN python3 -m venv venv + +# Install Python dependencies +RUN /opt/odoo/venv/bin/pip install --upgrade pip \ + && /opt/odoo/venv/bin/pip install -r /opt/odoo/odoo-server/requirements.txt \ + && /opt/odoo/venv/bin/pip install phonenumbers + +# Create Odoo config directory in /opt/odoo (writable by odoo user) +RUN mkdir -p /opt/odoo \ + && touch /opt/odoo/odoo.conf \ + && chown odoo:odoo /opt/odoo/odoo.conf \ + && chmod 640 /opt/odoo/odoo.conf + +# Environment variables for database configuration +ENV DB_HOST=postgres +ENV DB_PORT=5432 +ENV DB_USER=odoo +ENV DB_NAME=mydb +ENV DB_PASSWORD=odoo +ENV ADMIN_PASSWD=my_admin_password + +# Expose Odoo ports +EXPOSE 8069 8072 + +# Volume for custom addons +VOLUME ["/opt/odoo/custom_addons"] + +# Set working directory +WORKDIR /opt/odoo/odoo-server + +# Copy entrypoint script and admin creation script +COPY odoo-entrypoint.sh /odoo-entrypoint.sh +RUN chmod +x /odoo-entrypoint.sh + +# Start Odoo +USER odoo +ENTRYPOINT ["/odoo-entrypoint.sh"] diff --git a/Services/odoo/odoo.container b/Services/odoo/odoo.container new file mode 100644 index 0000000..829b992 --- /dev/null +++ b/Services/odoo/odoo.container @@ -0,0 +1,27 @@ +[Container] +ContainerName=odoo +Image=localhost/odoo:19-amd64 +#AutoUpdate=registry +Network=internal.network +PublishPort=8069:8069 +PublishPort=8072:8072 + +# Custom addons volume +Volume=/srv/containers/odoo/custom_addons:/opt/odoo/custom_addons +Volume=/srv/containers/odoo/filestore:/opt/odoo/data/filestore + +# Database connection (adjust host if needed) +Environment=ADMIN_PASSWD=my_admin_password +Environment=DB_HOST=postgres +Environment=DB_PORT=5432 +Environment=DB_USER=odoo +Environment=DB_PASSWORD=odoo +Environment=DB_NAME=mydb + + +[Service] +Restart=on-failure +TimeoutStartSec=15m + +[Install] +WantedBy=multi-user.target default.target diff --git a/Services/postgres.README b/Services/postgres.README new file mode 100644 index 0000000..8765ec0 --- /dev/null +++ b/Services/postgres.README @@ -0,0 +1,12 @@ +# Create DB + +Create User +$ podman exec -it postgres psql -U postgres -c "CREATE USER [nome_progetto] WITH password '[password_db_progetto]';" + +Or with CREATEDB +$ podman exec -it postgres psql -U postgres -c "CREATE USER [nome_progetto] WITH password '[password_db_progetto]' CREATEDB;" + +Create DB +$ podman exec -it postgres psql -U postgres -c "CREATE DATABASE [nome_progetto];" +$ podman exec -it postgres psql -U postgres -c "GRANT ALL privileges ON DATABASE [nome_progetto] TO [nome_progetto];" +$ podman exec -it postgres psql -U postgres -d [nome_progetto] -c "GRANT CREATE ON SCHEMA public TO [nome_progetto];"