From 9ae698926929476213bbb3b9b4cb836b68856a73 Mon Sep 17 00:00:00 2001 From: ews-pgasser Date: Mon, 20 Apr 2026 15:34:55 +0200 Subject: [PATCH 1/4] fix: remove nested sites assets volume --- images/layered/Containerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/images/layered/Containerfile b/images/layered/Containerfile index de5e835d..02bf9a20 100644 --- a/images/layered/Containerfile +++ b/images/layered/Containerfile @@ -34,7 +34,6 @@ WORKDIR /home/frappe/frappe-bench VOLUME [ \ "/home/frappe/frappe-bench/sites", \ - "/home/frappe/frappe-bench/sites/assets", \ "/home/frappe/frappe-bench/logs" \ ] From 0cddb6f35becbf9027f67058ef8ffcc74c505321 Mon Sep 17 00:00:00 2001 From: ews-pgasser Date: Mon, 20 Apr 2026 15:35:36 +0200 Subject: [PATCH 2/4] docs: document volume migration notes for sites/assets change --- docs/02-setup/02-build-setup.md | 39 +++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/docs/02-setup/02-build-setup.md b/docs/02-setup/02-build-setup.md index d411cab7..c4404d93 100644 --- a/docs/02-setup/02-build-setup.md +++ b/docs/02-setup/02-build-setup.md @@ -74,20 +74,20 @@ podman build \ ## Build args -| Arg | Purpose | -| -------------------- | --------------------------------------------------------------------------------------------- | -| **Frappe Framework** | | -| FRAPPE_PATH | Repository URL for Frappe framework source code. Defaults to https://github.com/frappe/frappe | -| FRAPPE_BRANCH | Branch to use for Frappe framework. Defaults to version-15 | -| **Custom Apps** | | -| (secret) apps_json | Passed via `--secret=id=apps_json,src=apps.json`. Never use `--build-arg` for this file. | -| **Dependencies** | | -| PYTHON_VERSION | Python version for the base image | -| NODE_VERSION | Node.js version | -| WKHTMLTOPDF_VERSION | wkhtmltopdf version | -| **bench only** | | -| DEBIAN_BASE | Debian base version for the bench image, defaults to `bookworm` | -| WKHTMLTOPDF_DISTRO | use the specified distro for debian package. Default is `bookworm` | +| Arg | Purpose | +| -------------------- | ----------------------------------------------------------------------------------------------- | +| **Frappe Framework** | | +| FRAPPE_PATH | Repository URL for Frappe framework source code. Defaults to | +| FRAPPE_BRANCH | Branch to use for Frappe framework. Defaults to version-15 | +| **Custom Apps** | | +| (secret) apps_json | Passed via `--secret=id=apps_json,src=apps.json`. Never use `--build-arg` for this file. | +| **Dependencies** | | +| PYTHON_VERSION | Python version for the base image | +| NODE_VERSION | Node.js version | +| WKHTMLTOPDF_VERSION | wkhtmltopdf version | +| **bench only** | | +| DEBIAN_BASE | Debian base version for the bench image, defaults to `bookworm` | +| WKHTMLTOPDF_DISTRO | use the specified distro for debian package. Default is `bookworm` | # env file @@ -130,6 +130,17 @@ This generates `compose.custom.yaml`, which you'll use to start all containers. > **NOTE**: podman compose is just a wrapper, it uses docker-compose if it is available or podman-compose if not. podman-compose have an issue reading .env files ([Issue](https://github.com/containers/podman-compose/issues/475)) and might create an issue when running the containers. +# Upgrading from images with a nested sites/assets volume + +Previous images declared `VOLUME /home/frappe/frappe-bench/sites/assets` separately. This created an implicit nested mountpoint inside the `sites` volume, which could cause Docker to attach different anonymous volumes per container in multi-container setups. +That declaration has been removed. `sites` is now the single shared mount, consistent with the compose setup and docs. + +**After pulling the updated image:** + +- Recreate all containers (`docker compose up --force-recreate`). Without this, Docker may keep the old anonymous `sites/assets` volume + attached from before the change. +- No `bench build` is needed — this only fixes mount consistency, not the asset workflow. + --- **Next:** [Start Setup →](03-start-setup.md) From 63f5169610e483770069061aa99040aeaaa13bce Mon Sep 17 00:00:00 2001 From: ews-pgasser Date: Mon, 20 Apr 2026 16:30:58 +0200 Subject: [PATCH 3/4] fix: removed sites/assets volume from custom & production Containerfile too --- images/custom/Containerfile | 1 - images/production/Containerfile | 1 - 2 files changed, 2 deletions(-) diff --git a/images/custom/Containerfile b/images/custom/Containerfile index c7519e84..e0c5b335 100644 --- a/images/custom/Containerfile +++ b/images/custom/Containerfile @@ -144,7 +144,6 @@ WORKDIR /home/frappe/frappe-bench VOLUME [ \ "/home/frappe/frappe-bench/sites", \ - "/home/frappe/frappe-bench/sites/assets", \ "/home/frappe/frappe-bench/logs" \ ] diff --git a/images/production/Containerfile b/images/production/Containerfile index 17f1573d..4dfb8685 100644 --- a/images/production/Containerfile +++ b/images/production/Containerfile @@ -137,7 +137,6 @@ WORKDIR /home/frappe/frappe-bench VOLUME [ \ "/home/frappe/frappe-bench/sites", \ - "/home/frappe/frappe-bench/sites/assets", \ "/home/frappe/frappe-bench/logs" \ ] From 17670ec04c34d2666bd82b819a43d8c01c1277f2 Mon Sep 17 00:00:00 2001 From: ews-pgasser Date: Mon, 20 Apr 2026 17:23:46 +0200 Subject: [PATCH 4/4] docs: move sites/assets volume upgrade note to migration docs --- docs/02-setup/02-build-setup.md | 11 ----------- .../06-migration/01-migrate-from-multi-image-setup.md | 11 +++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/02-setup/02-build-setup.md b/docs/02-setup/02-build-setup.md index c4404d93..d0e6907b 100644 --- a/docs/02-setup/02-build-setup.md +++ b/docs/02-setup/02-build-setup.md @@ -130,17 +130,6 @@ This generates `compose.custom.yaml`, which you'll use to start all containers. > **NOTE**: podman compose is just a wrapper, it uses docker-compose if it is available or podman-compose if not. podman-compose have an issue reading .env files ([Issue](https://github.com/containers/podman-compose/issues/475)) and might create an issue when running the containers. -# Upgrading from images with a nested sites/assets volume - -Previous images declared `VOLUME /home/frappe/frappe-bench/sites/assets` separately. This created an implicit nested mountpoint inside the `sites` volume, which could cause Docker to attach different anonymous volumes per container in multi-container setups. -That declaration has been removed. `sites` is now the single shared mount, consistent with the compose setup and docs. - -**After pulling the updated image:** - -- Recreate all containers (`docker compose up --force-recreate`). Without this, Docker may keep the old anonymous `sites/assets` volume - attached from before the change. -- No `bench build` is needed — this only fixes mount consistency, not the asset workflow. - --- **Next:** [Start Setup →](03-start-setup.md) diff --git a/docs/06-migration/01-migrate-from-multi-image-setup.md b/docs/06-migration/01-migrate-from-multi-image-setup.md index 0fd2e344..04d8a2c1 100644 --- a/docs/06-migration/01-migrate-from-multi-image-setup.md +++ b/docs/06-migration/01-migrate-from-multi-image-setup.md @@ -114,3 +114,14 @@ create-site: # ... removed for brevity ``` + +## Upgrading from images with a nested sites/assets volume + +Previous images declared `VOLUME /home/frappe/frappe-bench/sites/assets` separately. This created an implicit nested mountpoint inside the `sites` volume, which could cause Docker to attach different anonymous volumes per container in multi-container setups. +That declaration has been removed. `sites` is now the single shared mount, consistent with the compose setup and docs. + +**After pulling the updated image:** + +- Recreate all containers (`docker compose up --force-recreate`). Without this, Docker may keep the old anonymous `sites/assets` volume + attached from before the change. +- No `bench build` is needed — this only fixes mount consistency, not the asset workflow.