fix(docker): mount doriath, openconnector and portaliq from their own checkouts - #154
Merged
Conversation
added 5 commits
July 29, 2026 18:34
…quest The nextcloud:34-apache image ships opcache.jit=1255 with an 8M buffer. On this workload that costs time rather than saving it. Measured 2026-07-29 on /ocs/v2.php/cloud/capabilities — an authenticated request that boots all 92 enabled apps and does no other work: opcache.jit=1255 min 939ms median 1065ms max 1241ms opcache.jit=disable min 794ms median 922ms max 1034ms ~140ms, about 13%, on EVERY request in the environment. Two reasons it does not pay here: mod_php under Apache prefork gives each worker its own JIT buffer, so compilation is repaid per process instead of amortised across the requests that process serves; and 8M is small for 92 apps, and a buffer that fills stops helping while tracing JIT keeps profiling and attempting compilation. Applied as a conf.d overlay that sorts after the image's opcache-recommended.ini, so it wins without patching or rebuilding the image. Found while chasing object-create latency (openregister#2186/#2187). The write path there is now 57-167ms, but ~850-950ms of every request is Nextcloud booting its apps, and this is the only part of that floor reachable without changing which apps are enabled. Deliberately NOT setting opcache.validate_timestamps=0: it would remove the per-request stat of every included file, but on a SHARED dev instance it means an edit does not take effect until opcache is reset, silently breaking everyone else's iteration loop. That belongs in a production image.
…eir real checkouts These five were mounted from ../openregister/custom_apps/<app>, a stale second copy: decidesk and openbuild are not git repositories there at all, petstore points at nextcloud-app-template, and shillinq sat five patch versions behind (0.9.18 vs 0.9.23). The container therefore ran code nobody was editing, which silently invalidated every live verification done against those apps. Also adds a planix mount — it had none, so nothing about planix could ever be verified against this instance. Mounting does not enable it. Applied to both the postgres 'nextcloud' service and 'nextcloud-mariadb'.
Compose derives its project name from the working directory, so running this file from .github/ targets a project called 'github' rather than the 'openregister' project the live stack was created under. That project is not empty -- other worktrees run CI-local stacks from their own .github/ dirs and their containers carry project=github too. A bare 'docker compose up -d --force-recreate nextcloud' from this directory therefore resolved a procest CI container as its 'nextcloud' service and stopped it, then failed on a name clash with conduction-postgres. Records the correct invocation.
… checkouts These three were still mounted from ../openregister/custom_apps/<app>, the stale second copy that five other apps were already moved off. doriath's and openconnector's copies there are not git repositories at all. The consequence is worse than being out of date: edits made in the real checkout never reached the container, so anything "verified live" against those apps was verifying different code. Proven 2026-08-04 by writing a marker file into ../openconnector that the container could not see, after a notifier fix appeared to have no effect. Applied to both the nextcloud and nextcloud-mariadb services. Takes effect on the next `docker compose -p openregister up -d --force-recreate --no-deps nextcloud`.
# Conflicts: # docker-compose.yml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
These three were still mounted from
../openregister/custom_apps/<app>— the stale second copy that five other apps were already moved off in an earlier pass. doriath's and openconnector's copies there are not git repositories at all.The consequence is worse than being out of date: edits made in the real checkout never reached the container, so anything "verified live" against those apps was verifying different code.
Proven 2026-08-04 by writing a marker file into
../openconnectorthat the container could not see, after a notifier fix appeared to have no effect. I had todocker cpthe file in to test it.Applied to both the
nextcloudandnextcloud-mariadbservices. YAML validates, and no stale-copy mount with a sibling checkout remains.Takes effect on the next
docker compose -p openregister up -d --force-recreate --no-deps nextcloud.Targeting
mainfor a human to merge — this repo has nodevelopmentbranch, andmainis protected.