odoo18/Dockerfile

152 lines
4.2 KiB
Docker

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 \
pyzk \
firebase-admin
# ------------------------------------------------------------------
# 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"]