diff --git a/Dockerfile b/Dockerfile index 313396068..5b5cd4f19 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,145 +1,149 @@ FROM python:3.12-bookworm -ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 -ENV LANG=C.UTF-8 -ENV TZ=Asia/Kolkata +# ------------------------------------------------------------------ +# Environment +# ------------------------------------------------------------------ -# ---------------------------------------------------- -# System Dependencies -# ---------------------------------------------------- +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + LANG=C.UTF-8 \ + TZ=Asia/Kolkata -RUN apt-get update && apt-get install -y \ - build-essential \ - gcc \ - g++ \ - git \ - curl \ - wget \ - npm \ - tini \ - 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 \ - wkhtmltopdf \ - && rm -rf /var/lib/apt/lists/* +# ------------------------------------------------------------------ +# Install PostgreSQL Repository & System Packages +# ------------------------------------------------------------------ -# ---------------------------------------------------- -# LESS Compiler -# ---------------------------------------------------- +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 groupadd --system odoo && \ - useradd \ - --system \ - --gid odoo \ - --create-home \ - --home-dir /opt/odoo \ - --shell /bin/bash \ - odoo +RUN useradd \ + --system \ + --create-home \ + --home-dir /opt/odoo \ + --shell /bin/bash \ + odoo -# ---------------------------------------------------- +# ------------------------------------------------------------------ # Working Directory -# ---------------------------------------------------- +# ------------------------------------------------------------------ WORKDIR /opt/odoo/source -# ---------------------------------------------------- -# Python -# ---------------------------------------------------- +# ------------------------------------------------------------------ +# Upgrade pip +# ------------------------------------------------------------------ -RUN python -m pip install --upgrade \ +RUN pip install --no-cache-dir --upgrade \ pip \ setuptools \ wheel -# ---------------------------------------------------- -# Copy Source -# ---------------------------------------------------- +# ------------------------------------------------------------------ +# Copy Application Source +# ------------------------------------------------------------------ COPY . . -# ---------------------------------------------------- -# Install Requirements -# ---------------------------------------------------- +# ------------------------------------------------------------------ +# Install Python Dependencies +# ------------------------------------------------------------------ RUN if [ -f requirements.txt ]; then \ - pip install --no-cache-dir -r requirements.txt ; \ - fi + pip install --no-cache-dir -r requirements.txt; \ + fi && \ + pip install --no-cache-dir \ + psycopg2-binary \ + pandas \ + qifparse \ + pypdf \ + phonenumbers \ + python-docx -RUN pip install --no-cache-dir \ - psycopg2-binary \ - pip-tools - qifparse - pandas - pypdf - -# ---------------------------------------------------- -# Directories -# ---------------------------------------------------- +# ------------------------------------------------------------------ +# Create Required Directories +# ------------------------------------------------------------------ RUN mkdir -p \ - /var/lib/odoo \ - /var/log/odoo \ - /mnt/extra-addons - -RUN chown -R odoo:odoo \ - /opt/odoo \ - /var/lib/odoo \ - /var/log/odoo \ - /mnt/extra-addons - -RUN chmod -R 755 \ - /var/lib/odoo \ - /var/log/odoo - -# ---------------------------------------------------- -# Switch User -# ---------------------------------------------------- + /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 Port -# ---------------------------------------------------- +# ------------------------------------------------------------------ +# 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 +HEALTHCHECK --interval=30s \ + --timeout=10s \ + --start-period=60s \ + --retries=5 \ +CMD curl -fs http://127.0.0.1:8069/web/login || exit 1 -# ---------------------------------------------------- -# Init Process -# ---------------------------------------------------- +# ------------------------------------------------------------------ +# Init +# ------------------------------------------------------------------ ENTRYPOINT ["/usr/bin/tini","--"] -# ---------------------------------------------------- -# Start Odoo -# ---------------------------------------------------- - CMD ["python3", "odoo-bin", "-c", "/etc/odoo/odoo.conf"]