Skip to content

refactor: long-form docker-compose syntax with de-collisioned host ports#13

Open
omranjamal wants to merge 2 commits intoehfazrezwan:devfrom
omranjamal:refactor/local-decollisioning
Open

refactor: long-form docker-compose syntax with de-collisioned host ports#13
omranjamal wants to merge 2 commits intoehfazrezwan:devfrom
omranjamal:refactor/local-decollisioning

Conversation

@omranjamal
Copy link
Copy Markdown

Summary

  • Converts all port mappings to long-form syntax (target/published/protocol) and volume mounts to long-form (type/source/target) for clarity and extensibility
  • Shifts default host-published ports by +7 to avoid collisions with other local services using standard ports (Redis 6379, Qdrant 6333, Neo4j 7474/7687)
  • Makes all host ports overridable via environment variables with sensible defaults

Port mapping

Service Container port Host default Env override
Neo4j HTTP 7474 7481 NEO4J_HTTP_PORT
Neo4j Bolt 7687 7694 NEO4J_BOLT_PORT
Redis 6379 6386 REDIS_PORT
Qdrant HTTP 6333 6340 QDRANT_HTTP_PORT
Qdrant gRPC 6334 6341 QDRANT_GRPC_PORT
Neuralscape 8199 8199 NEURALSCAPE_PORT

.env.example cleanup

  • Removed redundant REDIS_URL and QDRANT_URL (overridden by docker-compose environment block; Pydantic picks up the runtime env vars at higher priority anyway)
  • Commented out NEO4J_PASSWORD (already defaulted via ${NEO4J_PASSWORD:-neuralscape} in docker-compose)
  • Added commented-out port override vars for discoverability

Other

  • Added .omc/ to .gitignore

Verification

docker compose config --quiet  # validates YAML — exits 0
# Override example:
REDIS_PORT=6379 docker compose config | grep -A2 "published"

No changes to container-internal ports, inter-container URLs, healthchecks, config.py defaults, or documentation.

Test plan

  • docker compose config --quiet passes
  • docker compose up -d starts all services on the new default ports
  • Port overrides via .env work as expected (e.g. REDIS_PORT=6379)
  • Inter-container communication unaffected (neuralscape can reach redis, neo4j, qdrant)

🤖 Generated with Claude Code

ehfazrezwan and others added 2 commits February 19, 2026 17:42
…orts

- Convert ports to long-form (target/published/protocol)
- Convert volumes to long-form (type/source/target)
- Shift default host ports by +7 to avoid collisions with local services
- Make all host ports overridable via env vars (NEO4J_HTTP_PORT, REDIS_PORT, etc.)
- Remove redundant REDIS_URL and QDRANT_URL from .env.example (overridden by docker-compose environment block)
- Comment out NEO4J_PASSWORD in .env.example (default already set in docker-compose)
- Add .omc/ to .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ehfazrezwan
Copy link
Copy Markdown
Owner

Review

Changes look good — long-form syntax, port de-collision, and env overrides are clean. No impact on inter-container communication, config.py defaults, or the plugin/service stack.

One note on .env.example: Removing REDIS_URL and QDRANT_URL makes sense for Docker-only usage, but for local dev (no Docker) users still need these. The README's "Local Setup" section tells users to set them. Consider keeping them as commented-out entries for discoverability:

# Local dev (non-Docker) — uncomment these:
# REDIS_URL=redis://localhost:6379
# QDRANT_URL=http://localhost:6333

Not a blocker — just a DX consideration.

Also, can you retarget this PR to dev instead of main?

@ehfazrezwan ehfazrezwan changed the base branch from main to dev February 20, 2026 09:11
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.

2 participants