# Custom Odoo 19 Dockerfile without VOLUME (Dokploy mounts extra-addons)
FROM ubuntu:noble
MAINTAINER Odoo S.A. <info@odoo.com>

SHELL ["/bin/bash", "-xo", "pipefail", "-c"]

ENV LANG=en_US.UTF-8

ARG TARGETARCH

# Install deps, lessc, less-plugin-clean-css, and wkhtmltopdf
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive \
    apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        dirmngr \
        fonts-noto-cjk \
        fonts-liberation \
        fonts-dejavu \
        gnupg \
        libssl-dev \
        node-less \
        npm \
        python3-magic \
        python3-num2words \
        python3-odf \
        python3-pdfminer \
        python3-pip \
        python3-phonenumbers \
        python3-pyldap \
        python3-qrcode \
        python3-renderpm \
        python3-setuptools \
        python3-slugify \
        python3-vobject \
        python3-watchdog \
        python3-xlrd \
        python3-xlwt \
        xz-utils && \
    if [ -z "${TARGETARCH}" ]; then \
        TARGETARCH="$(dpkg --print-architecture)"; \
    fi; \
    WKHTMLTOPDF_ARCH=${TARGETARCH} && \
    case ${TARGETARCH} in \
    "amd64") WKHTMLTOPDF_ARCH=amd64 && WKHTMLTOPDF_SHA=967390a759707337b46d1c02452e2bb6b2dc6d59  ;; \
    "arm64")  WKHTMLTOPDF_SHA=90f6e69896d51ef77339d3f3a20f8582bdf496cc  ;; \
    "ppc64le" | "ppc64el") WKHTMLTOPDF_ARCH=ppc64el && WKHTMLTOPDF_SHA=5312d7d34a25b321282929df82e3574319aed25c  ;; \
    esac \
    && curl -o wkhtmltox.deb -sSL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_${WKHTMLTOPDF_ARCH}.deb \
    && echo ${WKHTMLTOPDF_SHA} wkhtmltox.deb | sha1sum -c - \
    && apt-get install -y --no-install-recommends ./wkhtmltox.deb \
    && rm -rf /var/lib/apt/lists/* wkhtmltox.deb

# Install latest postgresql-client
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ noble-pgdg main' > /etc/apt/sources.list.d/pgdg.list \
    && GNUPGHOME="$(mktemp -d)" \
    && export GNUPGHOME \
    && repokey='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8' \
    && gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "${repokey}" \
    && gpg --batch --armor --export "${repokey}" > /etc/apt/trusted.gpg.d/pgdg.gpg.asc \
    && gpgconf --kill all \
    && rm -rf "$GNUPGHOME" \
    && apt-get update  \
    && apt-get install --no-install-recommends -y postgresql-client \
    && rm -f /etc/apt/sources.list.d/pgdg.list \
    && rm -rf /var/lib/apt/lists/*

# Install rtlcss
RUN npm install -g rtlcss

# Install Odoo
ENV ODOO_VERSION=19.0
ARG ODOO_RELEASE=20260118
ARG ODOO_SHA=9cb5691e31d2d8831887e85cc07268016f522f4d
RUN curl -o odoo.deb -sSL http://nightly.odoo.com/${ODOO_VERSION}/nightly/deb/odoo_${ODOO_VERSION}.${ODOO_RELEASE}_all.deb \
    && echo "${ODOO_SHA} odoo.deb" | sha1sum -c - \
    && apt-get update \
    && apt-get -y install --no-install-recommends ./odoo.deb \
    && rm -rf /var/lib/apt/lists/* odoo.deb

# Set permissions (NO VOLUME declaration - Dokploy manages volumes)
RUN mkdir -p /var/lib/odoo /mnt/extra-addons \
    && chown -R odoo:odoo /var/lib/odoo /mnt/extra-addons \
    && chmod -R u+w /var/lib/odoo

# Make custom addons available in the image
COPY ./odoo/addons /mnt/extra-addons
RUN chown -R odoo:odoo /mnt/extra-addons \
    && if grep -q '^addons_path' /etc/odoo/odoo.conf; then \
        sed -i 's|^addons_path *= *|addons_path = /mnt/extra-addons,|' /etc/odoo/odoo.conf; \
      else \
        echo 'addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons,/var/lib/odoo/.local/share/Odoo/addons/19.0,/usr/lib/python3/dist-packages/addons' >> /etc/odoo/odoo.conf; \
    fi

# Build self-contained entrypoint in image (no external files required)
RUN printf '%s\n' \
    '#!/usr/bin/env bash' \
    'set -e' \
    '' \
    'odoo_cmd=(odoo)' \
    '' \
    'if [ -n "${ODOO_RC:-}" ] && [ -f "${ODOO_RC}" ]; then' \
    '  odoo_cmd+=(-c "${ODOO_RC}")' \
    'elif [ -f /etc/odoo/odoo.conf ]; then' \
    '  odoo_cmd+=(-c /etc/odoo/odoo.conf)' \
    'fi' \
    '' \
    '[ -n "${ODOO_DB_HOST:-}" ] && odoo_cmd+=(--db_host="${ODOO_DB_HOST}")' \
    '[ -n "${ODOO_DB_PORT:-}" ] && odoo_cmd+=(--db_port="${ODOO_DB_PORT}")' \
    '[ -n "${ODOO_DB_USER:-}" ] && odoo_cmd+=(--db_user="${ODOO_DB_USER}")' \
    '[ -n "${ODOO_DB_PASSWORD:-}" ] && odoo_cmd+=(--db_password="${ODOO_DB_PASSWORD}")' \
    '[ -n "${ODOO_DB_NAME:-}" ] && odoo_cmd+=(-d "${ODOO_DB_NAME}")' \
    '' \
    'exec "${odoo_cmd[@]}"' \
    > /entrypoint.sh \
    && chmod +x /entrypoint.sh

# Expose Odoo services
EXPOSE 8069 8071 8072

ENV ODOO_RC=/etc/odoo/odoo.conf

USER odoo

CMD ["/entrypoint.sh"]
