FROM python:3.12-bookworm # ------------------------------------------------------------------ # Environment # ------------------------------------------------------------------ ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ LANG=C.UTF-8 \ TZ=Asia/Kolkata # ------------------------------------------------------------------ # Install PostgreSQL Repository & System Packages # ------------------------------------------------------------------ RUN apt-get update && \ apt-get install -y --no-install-recommends \ build-essential \ gcc \ g++ \ git \ curl \ npm \ wget \ tini \ gnupg \ ca-certificates \ lsb-release && \ mkdir -p /etc/apt/keyrings && \ wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | \ gpg --dearmor -o /etc/apt/keyrings/postgresql.gpg && \ echo "deb [signed-by=/etc/apt/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" \ > /etc/apt/sources.list.d/pgdg.list && \ apt-get update && \ apt-get install -y --no-install-recommends \ postgresql-client-16 \ libpq-dev \ libldap2-dev \ libsasl2-dev \ libxml2-dev \ libxslt1-dev \ libjpeg62-turbo-dev \ zlib1g-dev \ libffi-dev \ libssl-dev \ liblcms2-dev \ libblas-dev \ libatlas-base-dev \ libyaml-dev \ libevent-dev \ fonts-dejavu \ iproute2 \ net-tools \ wkhtmltopdf && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # ------------------------------------------------------------------ # Install LESS Compiler (Required by Odoo) # ------------------------------------------------------------------ RUN npm install -g less less-plugin-clean-css # ------------------------------------------------------------------ # Create Odoo User # ------------------------------------------------------------------ RUN useradd \ --system \ --create-home \ --home-dir /opt/odoo \ --shell /bin/bash \ odoo # ------------------------------------------------------------------ # Working Directory # ------------------------------------------------------------------ WORKDIR /opt/odoo/source # ------------------------------------------------------------------ # Upgrade pip # ------------------------------------------------------------------ RUN pip install --no-cache-dir --upgrade \ pip \ setuptools \ wheel # ------------------------------------------------------------------ # Copy Application Source # ------------------------------------------------------------------ COPY . . # ------------------------------------------------------------------ # Install Python Dependencies # ------------------------------------------------------------------ RUN if [ -f requirements.txt ]; then \ pip install --no-cache-dir -r requirements.txt; \ fi && \ pip install --no-cache-dir \ psycopg2-binary \ pandas \ qifparse \ pypdf \ phonenumbers \ python-docx # ------------------------------------------------------------------ # Create Required Directories # ------------------------------------------------------------------ RUN mkdir -p \ /var/lib/odoo \ /var/log/odoo \ /mnt/extra-addons && \ chown -R odoo:odoo \ /opt/odoo \ /var/lib/odoo \ /var/log/odoo \ /mnt/extra-addons USER odoo # ------------------------------------------------------------------ # Expose Odoo Port # ------------------------------------------------------------------ EXPOSE 8069 # ------------------------------------------------------------------ # Health Check # ------------------------------------------------------------------ HEALTHCHECK --interval=30s \ --timeout=10s \ --start-period=60s \ --retries=5 \ CMD curl -fs http://127.0.0.1:8069/web/login || exit 1 # ------------------------------------------------------------------ # Init # ------------------------------------------------------------------ ENTRYPOINT ["/usr/bin/tini","--"] CMD ["python3", "odoo-bin", "-c", "/etc/odoo/odoo.conf"]