feat: Update production image

- Bump python to 3.12.3
- bump node to v22.14.0
- update dependencies from Frappe Docker repo
- use custom-apps config from Frappe Docker Repo
- Add rafnav apps to image
- add prod build cmd to installation script
This commit is contained in:
JJ-Cronos 2025-03-27 12:20:01 +02:00
parent d4fa1c6ef0
commit e410c5938f

View file

@ -1,12 +1,15 @@
ARG PYTHON_VERSION=3.11.6 ARG PYTHON_VERSION=3.12.3
ARG DEBIAN_BASE=bookworm ARG DEBIAN_BASE=bookworm
FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base
COPY resources/nginx-template.conf /templates/nginx/frappe.conf.template
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
ARG WKHTMLTOPDF_VERSION=0.12.6.1-3 ARG WKHTMLTOPDF_VERSION=0.12.6.1-3
ARG WKHTMLTOPDF_DISTRO=bookworm ARG WKHTMLTOPDF_DISTRO=bookworm
ARG NODE_VERSION=18.18.2 ARG NODE_VERSION=22.14.0
ENV NVM_DIR=/home/frappe/.nvm ENV NVM_DIR=/home/frappe/.nvm
ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH} ENV PATH=${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH}
RUN useradd -ms /bin/bash frappe \ RUN useradd -ms /bin/bash frappe \
&& apt-get update \ && apt-get update \
@ -65,10 +68,9 @@ RUN useradd -ms /bin/bash frappe \
&& chown -R frappe:frappe /etc/nginx/nginx.conf \ && chown -R frappe:frappe /etc/nginx/nginx.conf \
&& chown -R frappe:frappe /var/log/nginx \ && chown -R frappe:frappe /var/log/nginx \
&& chown -R frappe:frappe /var/lib/nginx \ && chown -R frappe:frappe /var/lib/nginx \
&& chown -R frappe:frappe /run/nginx.pid && chown -R frappe:frappe /run/nginx.pid \
&& chmod 755 /usr/local/bin/nginx-entrypoint.sh \
COPY resources/nginx-template.conf /templates/nginx/frappe.conf.template && chmod 644 /templates/nginx/frappe.conf.template
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
FROM base AS builder FROM base AS builder
@ -76,6 +78,12 @@ RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
# For frappe framework # For frappe framework
wget \ wget \
#for building arm64 binaries
libcairo2-dev \
libpango1.0-dev \
libjpeg-dev \
libgif-dev \
librsvg2-dev \
# For psycopg2 # For psycopg2
libpq-dev \ libpq-dev \
# Other # Other
@ -86,6 +94,7 @@ RUN apt-get update \
libsasl2-dev \ libsasl2-dev \
libtiff5-dev \ libtiff5-dev \
libwebp-dev \ libwebp-dev \
pkg-config \
redis-tools \ redis-tools \
rlwrap \ rlwrap \
tk8.6-dev \ tk8.6-dev \
@ -96,26 +105,34 @@ RUN apt-get update \
libbz2-dev \ libbz2-dev \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# apps.json includes
ARG APPS_JSON_BASE64
RUN if [ -n "${APPS_JSON_BASE64}" ]; then \
mkdir /opt/frappe && echo "${APPS_JSON_BASE64}" | base64 -d > /opt/frappe/apps.json; \
fi
USER frappe USER frappe
ARG FRAPPE_BRANCH=version-15 ARG FRAPPE_BRANCH=version-15
ARG FRAPPE_PATH=https://github.com/frappe/frappe ARG FRAPPE_PATH=https://github.com/frappe/frappe
ARG ERPNEXT_REPO=https://github.com/frappe/erpnext RUN export APP_INSTALL_ARGS="" && \
ARG ERPNEXT_BRANCH=version-15 if [ -n "${APPS_JSON_BASE64}" ]; then \
RUN bench init \ export APP_INSTALL_ARGS="--apps_path=/opt/frappe/apps.json"; \
--frappe-branch=${FRAPPE_BRANCH} \ fi && \
--frappe-path=${FRAPPE_PATH} \ bench init ${APP_INSTALL_ARGS}\
--no-procfile \ --frappe-branch=${FRAPPE_BRANCH} \
--no-backups \ --frappe-path=${FRAPPE_PATH} \
--skip-redis-config-generation \ --no-procfile \
--verbose \ --no-backups \
/home/frappe/frappe-bench && \ --skip-redis-config-generation \
--verbose \
/home/frappe/frappe-bench && \
cd /home/frappe/frappe-bench && \ cd /home/frappe/frappe-bench && \
bench get-app --branch=${ERPNEXT_BRANCH} --resolve-deps erpnext ${ERPNEXT_REPO} && \
echo "{}" > sites/common_site_config.json && \ echo "{}" > sites/common_site_config.json && \
bench build --production \
find apps -mindepth 1 -path "*/.git" | xargs rm -fr find apps -mindepth 1 -path "*/.git" | xargs rm -fr
FROM base as erpnext FROM base AS backend
USER frappe USER frappe