# Custom Odoo 19 Dockerfile without VOLUME (Dokploy mounts extra-addons) FROM ubuntu:noble MAINTAINER Odoo S.A. 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"]