From 3b4b539607c42ec7bb959bc8e03d890a1fc1d277 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 17 Mar 2022 04:05:55 +0000 Subject: [PATCH 01/10] chore: Update example.env --- example.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example.env b/example.env index 3ff364e5..91fc8770 100644 --- a/example.env +++ b/example.env @@ -1,6 +1,6 @@ # Reference: https://github.com/frappe/frappe_docker/blob/main/docs/images-and-compose-files.md -FRAPPE_VERSION=v13.22.1 +FRAPPE_VERSION=v13.22.2 # Only with ERPNext override ERPNEXT_VERSION=v13.22.1 From 1dd6e08b4768cdc489c2d0a9bb5ecfecf267712d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Mar 2022 10:22:40 +0300 Subject: [PATCH 02/10] chore(deps): Update pre-commit hooks (#708) Co-authored-by: vrslev --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5bfc245d..40942125 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - id: isort - repo: https://github.com/pre-commit/mirrors-prettier - rev: v2.5.1 + rev: v2.6.0 hooks: - id: prettier From 10d2172bd83826e5a0a8cbe6ad2a6318911e3573 Mon Sep 17 00:00:00 2001 From: RashiqAzhan Date: Thu, 17 Mar 2022 13:21:10 +0000 Subject: [PATCH 03/10] Fix broken link in docs. (#710) --- docs/docker-swarm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docker-swarm.md b/docs/docker-swarm.md index 1efb5177..d7d03fdc 100644 --- a/docs/docker-swarm.md +++ b/docs/docker-swarm.md @@ -52,4 +52,4 @@ Notes: #### Site Operations -Refer [site operations documentation](./site-operations) to create new site, migrate site, drop site and perform other site operations. +Refer [site operations documentation](./site-operations.md) to create new site, migrate site, drop site and perform other site operations. From d4469cfb646c63f40cc16c6ead434edcc34ffade Mon Sep 17 00:00:00 2001 From: Lev Date: Fri, 18 Mar 2022 13:50:39 +0300 Subject: [PATCH 04/10] fix: Letterheads missing (#704) * fix: Letterheads missing Fixes #703 * empty --- images/worker/Dockerfile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/images/worker/Dockerfile b/images/worker/Dockerfile index ca79c09a..33e40d1f 100644 --- a/images/worker/Dockerfile +++ b/images/worker/Dockerfile @@ -79,9 +79,20 @@ RUN --mount=type=bind,target=/home/frappe/erpnext-wheels,source=/home/frappe/erp FROM base as configured_base +ARG WKHTMLTOPDF_VERSION=0.12.6-1 + RUN apt-get update \ + # Setup Node lists && apt-get install --no-install-recommends -y curl \ && curl -sL https://deb.nodesource.com/setup_14.x | bash - \ + # Install wkhtmltopdf with patched qt + && if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \ + && if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; fi \ + && downloaded_file=wkhtmltox_$WKHTMLTOPDF_VERSION.buster_${ARCH}.deb \ + && curl -sLO https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file \ + && apt-get install -y ./$downloaded_file \ + && rm $downloaded_file \ + # Cleanup && apt-get purge -y --auto-remove curl \ && apt-get update \ && apt-get install --no-install-recommends -y \ @@ -89,16 +100,13 @@ RUN apt-get update \ mariadb-client \ # Postgres postgresql-client \ - # wkhtmltopdf - xvfb \ - libfontconfig \ - wkhtmltopdf \ # For healthcheck wait-for-it \ jq \ # other nodejs \ && rm -rf /var/lib/apt/lists/* + USER frappe COPY pretend-bench.sh /usr/local/bin/bench From 4e1a5641c6c5a634d92d0974241baf22d3fe59ad Mon Sep 17 00:00:00 2001 From: Jonas Weigand Date: Sat, 19 Mar 2022 06:33:11 +0100 Subject: [PATCH 05/10] Update docs to advise for docker-compose v2 (#712) This change is to inform users to use docker-compose v2. Using v1 can cause problems when parsing the final docker-compose.yaml. Mitigates #701 --- docs/images-and-compose-files.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/images-and-compose-files.md b/docs/images-and-compose-files.md index d763e31d..ab3d01e0 100644 --- a/docs/images-and-compose-files.md +++ b/docs/images-and-compose-files.md @@ -51,6 +51,8 @@ It is quite simple to run overrides. All we need to do is to specify compose fil docker-compose -f compose.yaml -f overrides/compose.erpnext.yaml config ``` +⚠ Make sure to use docker-compose v2 (run `docker-compose -v` to check). If you want to use v1 make sure the correct `$`-signs as they get duplicated by the `config` command! + That's it! Of course, we also have to setup `.env` before all of that, but that's not the point. ## Configuration From f28072722a1fcb420b9c4c609aebe36434b89bae Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 21 Mar 2022 05:31:45 +0000 Subject: [PATCH 06/10] chore: Update example.env --- example.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example.env b/example.env index 91fc8770..f0dd8118 100644 --- a/example.env +++ b/example.env @@ -1,9 +1,9 @@ # Reference: https://github.com/frappe/frappe_docker/blob/main/docs/images-and-compose-files.md -FRAPPE_VERSION=v13.22.2 +FRAPPE_VERSION=v13.23.0 # Only with ERPNext override -ERPNEXT_VERSION=v13.22.1 +ERPNEXT_VERSION=v13.23.0 DB_PASSWORD=123 From 2ef5c414205302b01a99a066ff7e1f6bf25e9e18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 11:09:07 +0300 Subject: [PATCH 07/10] chore(deps): bump actions/cache from 2 to 3 (#723) Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ad734b31..18014a23 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -25,7 +25,7 @@ jobs: go-version: "^1.14" - name: Cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ~/.cache/pre-commit From f86b389466e67f1df1fa4ae054f7b172dd9cc055 Mon Sep 17 00:00:00 2001 From: Lev Date: Wed, 23 Mar 2022 11:43:47 +0300 Subject: [PATCH 08/10] Simplify Dockerfiles and custom app guide (#714) * Add assets builder image * Use assets builder in custom_app tutorial * Use erpnext in custom app tutorial * Add info about base images (frappe or erpnext) * Add assets-builder image to frappe group so it is built in CI * Update backend image: - Fix mounted caching - Uncomplicate ERPNext build - Fix root-frappe permissions * Add build-assets script for simpler frontend build * Add install-app script for backend build * Rename build-assets to install-app for frontend build * Update custom app builds according to new main dockerfiles * Cache pip packages in custom app example backend dockerfile * Update custom app guide * Fix typo in backend dockerfile * Add info about install-app scripts in readme --- custom_app/README.md | 10 ++++- custom_app/backend.Dockerfile | 22 +++++++--- custom_app/docker-bake.hcl | 4 +- custom_app/frontend.Dockerfile | 53 +++++------------------- docker-bake.hcl | 9 +++- images/nginx/Dockerfile | 76 +++++++++++----------------------- images/nginx/install-app.sh | 29 +++++++++++++ images/worker/Dockerfile | 47 +++++++-------------- images/worker/install-app.sh | 17 ++++++++ 9 files changed, 132 insertions(+), 135 deletions(-) create mode 100755 images/nginx/install-app.sh create mode 100755 images/worker/install-app.sh diff --git a/custom_app/README.md b/custom_app/README.md index 7ebd919c..820ae7bc 100644 --- a/custom_app/README.md +++ b/custom_app/README.md @@ -18,15 +18,17 @@ To get started, install Docker and [Buildx](https://github.com/docker/buildx#ins Before the next step—to build images—replace "custom_app" with your app's name in `docker-bake.hcl`. After that, let's try to build: ```bash -FRAPPE_VERSION= docker buildx bake +FRAPPE_VERSION=... ERPNEXT_VERSION=... docker buildx bake ``` +> 💡 We assume that majority of our users use ERPNext, that's why images in this tutorial are based on ERPNext images. If don't want ERPNext, change base image in Dockerfiles and remove ERPNEXT_VERSION from bake file. + If something goes wrong feel free to leave an issue. To test if site works, setup `.env` file (check [example](<(https://github.com/frappe/frappe_docker/blob/main/example.env)>)) and run: ```bash -docker-compose up -d +docker-compose -f compose.yaml -f overrides/compose.noproxy.yaml -f overrides/compose.mariadb.yaml -f overrides/compose.redis.yaml -f custom_app/compose.override.yaml up -d docker-compose exec backend \ bench new-site 127.0.0.1 \ --mariadb-root-password 123 \ @@ -36,3 +38,7 @@ docker-compose restart backend ``` Cool! You just containerized your app! + +## Installing multiple apps + +Both backend and frontend builds contain `install-app` script that places app where it should be. Each call to script installs given app. Usage: `install-app [APP_NAME] [BRANCH?] [GIT_URL?]`. diff --git a/custom_app/backend.Dockerfile b/custom_app/backend.Dockerfile index 62a487d0..cc779b1c 100644 --- a/custom_app/backend.Dockerfile +++ b/custom_app/backend.Dockerfile @@ -1,8 +1,20 @@ -ARG FRAPPE_VERSION -FROM frappe/frappe-worker:${FRAPPE_VERSION} +# syntax=docker/dockerfile:1.3 + +ARG ERPNEXT_VERSION +FROM frappe/erpnext-worker:${ERPNEXT_VERSION} + +USER root ARG APP_NAME -COPY --chown=frappe . ../apps/${APP_NAME} +COPY . ../apps/${APP_NAME} -RUN echo "frappe\n${APP_NAME}" >/home/frappe/frappe-bench/sites/apps.txt \ - && ../env/bin/pip install --no-cache-dir -e ../apps/${APP_NAME} +RUN --mount=type=cache,target=/root/.cache/pip \ + install-app ${APP_NAME} + +# or with git: +# ARG APP_NAME +# ARG BRANCH +# ARG GIT_URL +# RUN install-assets ${APP_NAME} ${BRANCH} ${GIT_URL} + +USER frappe diff --git a/custom_app/docker-bake.hcl b/custom_app/docker-bake.hcl index 12aa7d0e..64971aa7 100644 --- a/custom_app/docker-bake.hcl +++ b/custom_app/docker-bake.hcl @@ -1,6 +1,7 @@ APP_NAME="custom_app" variable "FRAPPE_VERSION" {} +variable "ERPNEXT_VERSION" {} group "default" { targets = ["backend", "frontend"] @@ -10,7 +11,7 @@ target "backend" { dockerfile = "backend.Dockerfile" tags = ["custom_app/worker:latest"] args = { - "FRAPPE_VERSION" = FRAPPE_VERSION + "ERPNEXT_VERSION" = ERPNEXT_VERSION "APP_NAME" = APP_NAME } } @@ -20,6 +21,7 @@ target "frontend" { tags = ["custom_app/nginx:latest"] args = { "FRAPPE_VERSION" = FRAPPE_VERSION + "ERPNEXT_VERSION" = ERPNEXT_VERSION "APP_NAME" = APP_NAME } } diff --git a/custom_app/frontend.Dockerfile b/custom_app/frontend.Dockerfile index 382608f5..09424c17 100644 --- a/custom_app/frontend.Dockerfile +++ b/custom_app/frontend.Dockerfile @@ -1,52 +1,19 @@ ARG FRAPPE_VERSION -FROM node:14-bullseye-slim as prod_node_modules - -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ - git \ - build-essential \ - python \ - ca-certificates \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR /root/frappe-bench -RUN mkdir -p sites/assets - -ARG FRAPPE_VERSION -RUN git clone --depth 1 -b ${FRAPPE_VERSION} https://github.com/frappe/frappe apps/frappe - -RUN yarn --cwd apps/frappe +ARG ERPNEXT_VERSION +FROM frappe/assets-builder:${FRAPPE_VERSION} as assets ARG APP_NAME COPY . apps/${APP_NAME} +RUN install-app ${APP_NAME} -# Install production node modules -RUN yarn --cwd apps/${APP_NAME} --prod +# or with git: +# ARG APP_NAME +# ARG BRANCH +# ARG GIT_URL +# RUN install-app ${APP_NAME} ${BRANCH} ${GIT_URL} +FROM frappe/erpnext-nginx:${ERPNEXT_VERSION} -FROM prod_node_modules as assets - -ARG APP_NAME - -# Install development node modules -RUN yarn --cwd apps/${APP_NAME} - -# Build assets -RUN echo "frappe\n${APP_NAME}" >sites/apps.txt \ - && yarn --cwd apps/frappe production --app ${APP_NAME} \ - && rm sites/apps.txt - - - -FROM frappe/frappe-nginx:${FRAPPE_VERSION} - -ARG APP_NAME - -# Copy all not built assets -COPY --from=prod_node_modules /root/frappe-bench/apps/${APP_NAME}/${APP_NAME}/public /usr/share/nginx/html/assets/${APP_NAME} -# Copy production node modules -COPY --from=prod_node_modules /root/frappe-bench/apps/${APP_NAME}/node_modules /usr/share/nginx/html/assets/${APP_NAME}/node_modules -# Copy built assets -COPY --from=assets /root/frappe-bench/sites /usr/share/nginx/html +COPY --from=assets /out /usr/share/nginx/html diff --git a/docker-bake.hcl b/docker-bake.hcl index 28355ada..025694d0 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -30,7 +30,7 @@ target "bench-test" { # Base for all other targets group "frappe" { - targets = ["frappe-worker", "frappe-nginx", "frappe-socketio"] + targets = ["frappe-worker", "frappe-nginx", "frappe-socketio", "assets-builder"] } group "erpnext" { @@ -81,6 +81,13 @@ target "frappe-nginx" { tags = tag("frappe-nginx", "${FRAPPE_VERSION}") } +target "assets-builder" { + inherits = ["default-args"] + context = "images/nginx" + target = "assets_builder" + tags = tag("assets-builder", "${FRAPPE_VERSION}") +} + target "erpnext-nginx" { inherits = ["default-args"] context = "images/nginx" diff --git a/images/nginx/Dockerfile b/images/nginx/Dockerfile index 9e435503..184dad1d 100644 --- a/images/nginx/Dockerfile +++ b/images/nginx/Dockerfile @@ -1,4 +1,4 @@ -FROM node:14-bullseye-slim as base +FROM node:14-bullseye-slim as assets_builder RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ @@ -8,81 +8,55 @@ RUN apt-get update \ ca-certificates \ && rm -rf /var/lib/apt/lists/* -WORKDIR /root/frappe-bench -RUN mkdir -p sites/assets +WORKDIR /frappe-bench + +RUN mkdir -p sites/assets /out/assets \ + && echo frappe >sites/apps.txt ARG FRAPPE_VERSION RUN git clone --depth 1 -b ${FRAPPE_VERSION} https://github.com/frappe/frappe apps/frappe - - -FROM base as frappe_prod_node_modules - -# Install production node modules -RUN yarn --cwd apps/frappe --prod - - - -FROM frappe_prod_node_modules as frappe_assets - # Install development node modules -RUN yarn --cwd apps/frappe - -# Build assets they're stored in frappe-bench/sites/assets -RUN echo "frappe" >sites/apps.txt \ - && yarn --cwd apps/frappe run production \ - && rm sites/apps.txt \ +RUN yarn --cwd apps/frappe \ # TODO: Currently `yarn run production` doesn't create .build on develop branch: https://github.com/frappe/frappe/issues/15396 - && if [ ! -f sites/.build ]; then touch sites/.build; fi + && if [ ! -f sites/.build ]; then touch sites/.build; fi \ + && cp sites/.build /out + +COPY install-app.sh /usr/local/bin/install-app +FROM assets_builder as frappe_assets -FROM base as erpnext_prod_node_modules +RUN install-app frappe + + +FROM assets_builder as erpnext_assets ARG ERPNEXT_VERSION -RUN git clone --depth 1 -b ${ERPNEXT_VERSION} https://github.com/frappe/erpnext apps/erpnext - -RUN yarn --cwd apps/erpnext --prod +RUN install-app erpnext ${ERPNEXT_VERSION} https://github.com/frappe/erpnext +FROM alpine/git as bench -FROM erpnext_prod_node_modules as erpnext_assets - -RUN yarn --cwd apps/erpnext - -COPY --from=frappe_assets /root/frappe-bench/apps/frappe/node_modules /root/frappe-bench/apps/frappe/node_modules -COPY --from=frappe_assets /root/frappe-bench/apps/frappe/package.json /root/frappe-bench/apps/frappe/yarn.lock /root/frappe-bench/apps/frappe/ - -RUN echo "frappe\nerpnext" >sites/apps.txt \ - && yarn --cwd apps/frappe run production --app erpnext \ - && rm sites/apps.txt - - - -FROM base as error_pages - -RUN git clone --depth 1 https://github.com/frappe/bench /root/bench - +# Error pages +RUN git clone --depth 1 https://github.com/frappe/bench /tmp/bench \ + && mkdir /out \ + && mv /tmp/bench/bench/config/templates/502.html /out/ FROM nginxinc/nginx-unprivileged:1.21.6-alpine as frappe -COPY --from=error_pages /root/bench/bench/config/templates/502.html /usr/share/nginx/html -COPY --from=base /root/frappe-bench/apps/frappe/frappe/public /usr/share/nginx/html/assets/frappe -COPY --from=frappe_prod_node_modules /root/frappe-bench/apps/frappe/node_modules /usr/share/nginx/html/assets/frappe/node_modules -COPY --from=frappe_assets /root/frappe-bench/sites /usr/share/nginx/html - # https://github.com/nginxinc/docker-nginx-unprivileged/blob/main/stable/alpine/20-envsubst-on-templates.sh COPY nginx-template.conf /etc/nginx/templates/default.conf.template # https://github.com/nginxinc/docker-nginx-unprivileged/blob/main/stable/alpine/docker-entrypoint.sh COPY entrypoint.sh /docker-entrypoint.d/frappe-entrypoint.sh -USER 1000 +COPY --from=bench /out /usr/share/nginx/html/ +COPY --from=frappe_assets /out /usr/share/nginx/html +USER 1000 FROM frappe as erpnext -COPY --from=erpnext_prod_node_modules /root/frappe-bench/apps/erpnext/erpnext/public /usr/share/nginx/html/assets/erpnext -COPY --from=erpnext_prod_node_modules /root/frappe-bench/apps/erpnext/node_modules /usr/share/nginx/html/assets/erpnext/node_modules -COPY --from=erpnext_assets /root/frappe-bench/sites /usr/share/nginx/html +COPY --from=erpnext_assets /out /usr/share/nginx/html diff --git a/images/nginx/install-app.sh b/images/nginx/install-app.sh new file mode 100755 index 00000000..c30a63f3 --- /dev/null +++ b/images/nginx/install-app.sh @@ -0,0 +1,29 @@ +#!/bin/bash +set -e +set -x + +APP=$1 BRANCH=$2 GIT_URL=$3 + +cd /frappe-bench + +if test "$BRANCH" && test "$GIT_URL"; then + # Clone in case not copied manually + git clone --depth 1 -b "$BRANCH" "$GIT_URL" "apps/$APP" +fi + +# Add all not built assets +cp -r "apps/$APP/$APP/public" "/out/assets/$APP" + +# Add production node modules +yarn --cwd "apps/$APP" --prod +cp -r "apps/$APP/node_modules" "/out/assets/$APP/node_modules" + +# Add built assets +yarn --cwd "apps/$APP" +echo "$APP" >>sites/apps.txt +yarn --cwd apps/frappe run production --app "$APP" +cp -r sites/assets /out + +# Cleanup +rm -rf "apps/$APP" +rm -rf sites/assets diff --git a/images/worker/Dockerfile b/images/worker/Dockerfile index 33e40d1f..e85eaaf9 100644 --- a/images/worker/Dockerfile +++ b/images/worker/Dockerfile @@ -14,12 +14,10 @@ USER frappe RUN mkdir -p /home/frappe/frappe-bench/apps /home/frappe/frappe-bench/logs /home/frappe/frappe-bench/sites WORKDIR /home/frappe/frappe-bench -RUN --mount=type=cache,target=/home/frappe/.cache/pip \ - pip install -U pip wheel \ +USER root +RUN pip install -U pip wheel \ && python -m venv env \ && env/bin/pip install -U pip wheel -USER root - FROM base as build_deps @@ -37,44 +35,26 @@ RUN apt-get update \ # Make is required to build wheels of ERPNext deps in develop branch for linux/arm64 make \ && rm -rf /var/lib/apt/lists/* -USER frappe +COPY install-app.sh /usr/local/bin/install-app FROM build_deps as frappe_builder ARG FRAPPE_VERSION -RUN --mount=type=cache,target=/home/frappe/.cache/pip \ - git clone --depth 1 -b ${FRAPPE_VERSION} https://github.com/frappe/frappe apps/frappe \ - && env/bin/pip install -e apps/frappe \ +RUN --mount=type=cache,target=/root/.cache/pip \ + install-app frappe ${FRAPPE_VERSION} https://github.com/frappe/frappe \ && env/bin/pip install -U gevent \ - && rm -r apps/frappe/.git \ # Link Frappe's node_modules/ to make Website Theme work && mkdir -p /home/frappe/frappe-bench/sites/assets/frappe/node_modules \ && ln -s /home/frappe/frappe-bench/sites/assets/frappe/node_modules /home/frappe/frappe-bench/apps/frappe/node_modules - -# We split ERPNext wheels build in separate stage to achieve concurrency with Frappe build -FROM build_deps as erpnext_wheels - -ARG ERPNEXT_VERSION -RUN git clone --depth 1 -b ${ERPNEXT_VERSION} https://github.com/frappe/erpnext apps/erpnext \ - && rm -r apps/erpnext/.git - -RUN --mount=type=cache,target=/home/frappe/.cache/pip \ - pip wheel --wheel-dir /home/frappe/erpnext-wheels -r apps/erpnext/requirements.txt - - - FROM frappe_builder as erpnext_builder -COPY --from=erpnext_wheels --chown=frappe /home/frappe/frappe-bench/apps/erpnext /home/frappe/frappe-bench/apps/erpnext -RUN --mount=type=bind,target=/home/frappe/erpnext-wheels,source=/home/frappe/erpnext-wheels,from=erpnext_wheels \ - --mount=type=cache,target=/home/frappe/.cache/pip \ - --mount=type=cache,target=/home/frappe/.cache/pip,source=/home/frappe/.cache/pip,from=erpnext_wheels \ - env/bin/pip install --find-links=/home/frappe/erpnext-wheels -e apps/erpnext - +ARG ERPNEXT_VERSION +RUN --mount=type=cache,target=/root/.cache/pip \ + install-app erpnext ${ERPNEXT_VERSION} https://github.com/frappe/erpnext FROM base as configured_base @@ -107,8 +87,6 @@ RUN apt-get update \ nodejs \ && rm -rf /var/lib/apt/lists/* -USER frappe - COPY pretend-bench.sh /usr/local/bin/bench COPY push_backup.py /usr/local/bin/push-backup COPY configure.py patched_bench_helper.py /usr/local/bin/ @@ -121,14 +99,19 @@ CMD [ "/home/frappe/frappe-bench/env/bin/gunicorn", "-b", "0.0.0.0:8000", "frapp FROM configured_base as frappe -RUN echo "frappe" >/home/frappe/frappe-bench/sites/apps.txt COPY --from=frappe_builder /home/frappe/frappe-bench/apps/frappe /home/frappe/frappe-bench/apps/frappe COPY --from=frappe_builder /home/frappe/frappe-bench/env /home/frappe/frappe-bench/env +COPY --from=frappe_builder /home/frappe/frappe-bench/sites/apps.txt /home/frappe/frappe-bench/sites/ + +USER frappe +# Split frappe and erpnext to reduce image size (because of frappe-bench/env/ directory) FROM configured_base as erpnext -RUN echo "frappe\nerpnext" >/home/frappe/frappe-bench/sites/apps.txt COPY --from=frappe_builder /home/frappe/frappe-bench/apps/frappe /home/frappe/frappe-bench/apps/frappe COPY --from=erpnext_builder /home/frappe/frappe-bench/apps/erpnext /home/frappe/frappe-bench/apps/erpnext COPY --from=erpnext_builder /home/frappe/frappe-bench/env /home/frappe/frappe-bench/env +COPY --from=erpnext_builder /home/frappe/frappe-bench/sites/apps.txt /home/frappe/frappe-bench/sites/ + +USER frappe diff --git a/images/worker/install-app.sh b/images/worker/install-app.sh new file mode 100755 index 00000000..f6fed4e7 --- /dev/null +++ b/images/worker/install-app.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e +set -x + +APP=$1 BRANCH=$2 GIT_URL=$3 + +cd /home/frappe/frappe-bench + +if test "$BRANCH" && test "$GIT_URL"; then + # Clone in case not copied manually + git clone --depth 1 -b "$BRANCH" "$GIT_URL" "apps/$APP" + rm -r "apps/$APP/.git" +fi + +env/bin/pip install -e "apps/$APP" + +echo "$APP" >>sites/apps.txt From 6f2e48d3e815fb560be4f8dfa4344c9989ce5b6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 11:56:40 +0300 Subject: [PATCH 09/10] chore(deps): bump peter-evans/create-pull-request from 3 to 4 (#725) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 3 to 4. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v3...v4) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pre-commit-autoupdate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit-autoupdate.yml b/.github/workflows/pre-commit-autoupdate.yml index 0307e4dd..295831e6 100644 --- a/.github/workflows/pre-commit-autoupdate.yml +++ b/.github/workflows/pre-commit-autoupdate.yml @@ -16,7 +16,7 @@ jobs: uses: vrslev/pre-commit-autoupdate@v1.0.0 - name: Create Pull Request - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v4 with: branch: pre-commit-autoupdate title: "chore(deps): Update pre-commit hooks" From ceab853dabd4ed2b272f50af31ee281c7e112dcf Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 23 Mar 2022 09:10:26 +0000 Subject: [PATCH 10/10] chore: Update example.env --- example.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example.env b/example.env index f0dd8118..ac2913f1 100644 --- a/example.env +++ b/example.env @@ -3,7 +3,7 @@ FRAPPE_VERSION=v13.23.0 # Only with ERPNext override -ERPNEXT_VERSION=v13.23.0 +ERPNEXT_VERSION=v13.23.1 DB_PASSWORD=123