Skip to content

Commit

Permalink
feat: allow layered custom image build (#1497)
Browse files Browse the repository at this point in the history
speed up build time
pull builder image
pack built assets into base image
  • Loading branch information
revant authored Oct 25, 2024
1 parent fe88018 commit 8ac69bb
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 1 deletion.
16 changes: 16 additions & 0 deletions docker-bake.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,19 @@ target "erpnext" {
target = "erpnext"
tags = tag("erpnext", "${ERPNEXT_VERSION}")
}

target "base" {
inherits = ["default-args"]
context = "."
dockerfile = "images/production/Containerfile"
target = "base"
tags = tag("base", "${FRAPPE_VERSION}")
}

target "build" {
inherits = ["default-args"]
context = "."
dockerfile = "images/production/Containerfile"
target = "build"
tags = tag("build", "${FRAPPE_VERSION}")
}
47 changes: 47 additions & 0 deletions images/layered/Containerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
ARG FRAPPE_BRANCH=version-15
ARG FRAPPE_PATH=https://github.com/frappe/frappe

FROM frappe/build:${FRAPPE_BRANCH} AS builder

RUN export APP_INSTALL_ARGS="" && \
if [ -n "${APPS_JSON_BASE64}" ]; then \
export APP_INSTALL_ARGS="--apps_path=/opt/frappe/apps.json"; \
fi && \
bench init ${APP_INSTALL_ARGS}\
--frappe-branch=${FRAPPE_BRANCH} \
--frappe-path=${FRAPPE_PATH} \
--no-procfile \
--no-backups \
--skip-redis-config-generation \
--verbose \
/home/frappe/frappe-bench && \
cd /home/frappe/frappe-bench && \
echo "{}" > sites/common_site_config.json && \
find apps -mindepth 1 -path "*/.git" | xargs rm -fr

FROM frappe/base:${FRAPPE_BRANCH} AS backend

USER frappe

COPY --from=builder --chown=frappe:frappe /home/frappe/frappe-bench /home/frappe/frappe-bench

WORKDIR /home/frappe/frappe-bench

VOLUME [ \
"/home/frappe/frappe-bench/sites", \
"/home/frappe/frappe-bench/sites/assets", \
"/home/frappe/frappe-bench/logs" \
]

CMD [ \
"/home/frappe/frappe-bench/env/bin/gunicorn", \
"--chdir=/home/frappe/frappe-bench/sites", \
"--bind=0.0.0.0:8000", \
"--threads=4", \
"--workers=2", \
"--worker-class=gthread", \
"--worker-tmp-dir=/dev/shm", \
"--timeout=120", \
"--preload", \
"frappe.app:application" \
]
4 changes: 3 additions & 1 deletion images/production/Containerfile
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ RUN useradd -ms /bin/bash frappe \
COPY resources/nginx-template.conf /templates/nginx/frappe.conf.template
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh

FROM base AS builder
FROM base AS build

RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
Expand Down Expand Up @@ -98,6 +98,8 @@ RUN apt-get update \

USER frappe

FROM build AS builder

ARG FRAPPE_BRANCH=version-15
ARG FRAPPE_PATH=https://github.com/frappe/frappe
ARG ERPNEXT_REPO=https://github.com/frappe/erpnext
Expand Down

0 comments on commit 8ac69bb

Please sign in to comment.