diff --git a/Dockerfile b/Dockerfile index cb807bb..54f5d67 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,13 +8,13 @@ # 1. The base tag is PINNED to the exact appstore image the app runs # (manifest.dockerImage). Never a floating tag: a rebuild must never # silently pull a newer LibreChat than the one we validated. -# 2. NEVER edit CloudronManifest.json — the copy in this repo must stay -# byte-identical to the OFFICIAL appstore manifest. `cloudron update` -# reads it from the deploy directory and applies it to the app; a -# hand-edited manifest that omits addons (postgresql, mongodb, oidc, -# sendmail, localstorage) strips them from the app and crash-loops it -# (mkdir: Read-only file system). That is what broke the sandbox on -# 2026-10-18 — the manifest, not the overlay, was the bug. +# 2. CloudronManifest.json keeps the OFFICIAL appstore addons block +# (postgresql, mongodb, oidc, sendmail, localstorage) — never remove or +# hand-edit those, or the app crash-loops (mkdir: Read-only file system). +# The ONLY field we change is `dockerImage`, repointed to the overlay tag +# built from this repo on every deploy (the base FROM stays the appstore +# image we validated). A stale dockerImage pin silently redeploys an old +# build — that is what broke the sandbox on 2026-10-18/19. # 3. This image changes ONLY static brand assets. All behavior lives on the # persistent volume (/app/data/librechat.yaml, /app/data/env, # /app/data/mcp/) and survives image updates unchanged. @@ -48,3 +48,10 @@ RUN sed -i 's|