Let multiple demos run concurrently without colliding#358
Merged
Conversation
Each repo's demo brought up the same stack on fixed canonical host
ports (saver 4537, web 3000, ...), a hardcoded `cyber-dojo` network
name, and fixed container names. So a demo in one repo (e.g. web)
could not run while a demo in another (e.g. differ) was up: they
fought over the same host ports and shared network. The workaround
was to let the new demo nuke everything with `docker rm -f`.
Make each demo its own docker-compose project instead:
- Drop the hardcoded network name and per-service container_name so
Compose namespaces them by project (COMPOSE_PROJECT_NAME, default
web). Override it to run a second web demo alongside the first.
- Stop publishing web and saver to the host; only nginx needs a host
port (CYBER_DOJO_NGINX_HOST_PORT). Backend services reach each
other over the project's private network, so nothing else collides.
asset_builder is left alone (not part of the demo; build_assets.sh
needs its publish).
- Replace demo.sh's global `docker rm -f` with a project-scoped
`compose down`, so bringing up one demo no longer kills the others.
Container references in the helper scripts no longer assume fixed
names; they resolve by compose project+service label via a shared
service_container() in lib.sh. This also fixes copy_in_saver_test_data
which previously grepped the `web_saver` substring of the old name.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Each repo's demo brought up the same stack on fixed canonical host
ports (saver 4537, web 3000, ...), a hardcoded
cyber-dojonetworkname, and fixed container names. So a demo in one repo (e.g. web)
could not run while a demo in another (e.g. differ) was up: they
fought over the same host ports and shared network. The workaround
was to let the new demo nuke everything with
docker rm -f.Make each demo its own docker-compose project instead:
docker rm -fwith a project-scopedcompose down, so bringing up one demo no longer kills the others.Container references in the helper scripts no longer assume fixed
names; they resolve by compose project+service label via a shared
service_container() in lib.sh. This also fixes copy_in_saver_test_data
which previously grepped the
web_saversubstring of the old name.Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com