Skip to content

fix(docker): mount doriath, openconnector and portaliq from their own checkouts - #154

Merged
rubenvdlinde merged 5 commits into
mainfrom
fix/compose-app-mounts
Aug 4, 2026
Merged

fix(docker): mount doriath, openconnector and portaliq from their own checkouts#154
rubenvdlinde merged 5 commits into
mainfrom
fix/compose-app-mounts

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

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 ../openconnector that the container could not see, after a notifier fix appeared to have no effect. I had to docker cp the file in to test it.

Applied to both the nextcloud and nextcloud-mariadb services. 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 main for a human to merge — this repo has no development branch, and main is protected.

Conduction Release Bot 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`.
@rubenvdlinde
rubenvdlinde merged commit c2c2265 into main Aug 4, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant