Fix Docker Compose default profile and error documentation#442
Conversation
- Add 'default' profile to all services so 'docker compose up --build -d' works without --profile flag - Update BackendStartupError.tsx to include '--profile full' in Docker command examples - Update docker-compose.yml comments to document the new default behavior This allows users to run either: - docker compose up --build -d (uses default profile, starts all services) - docker compose --profile full up --build -d (explicit profile, same result) - docker compose --profile backend up --build -d (backend services only) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
WalkthroughUpdates UI Docker instructions to show a full rebuild startup command (uses Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches
🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
This allows users to choose their preferred profile (backend, full, etc.) rather than assuming they always want the full profile for error recovery.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
archon-ui-main/src/components/BackendStartupError.tsx (1)
52-52: Avoid placeholders in copy-paste commands; use the canonical profile name.Users will copy this command verbatim. "YOUR_PROFILE" will fail with an unknown profile error. Given compose defines "full", use that explicitly (and keep the note below). If you later adopt a true default-up behavior, we can revisit.
Apply this diff:
- docker compose down && docker compose --profile YOUR_PROFILE up -d + docker compose down && docker compose --profile full up -ddocker-compose.yml (1)
14-14: Adding “default” to profiles doesn’t make services start by default; consider removing it or standardizing onfull.The extra
defaultlabel is redundant and risks implying special behavior that doesn’t exist. Prefer a single canonical “full” profile and accurate docs, or require--profile defaultexplicitly if you keep it. For a true no-flag experience, useCOMPOSE_PROFILES=fullin the environment or a wrapper script/Make target. (docs.docker.com)Minimal cleanup (remove
defaultfrom each service):- profiles: ["backend", "full", "default"] + profiles: ["backend", "full"]- profiles: ["frontend", "full", "default"] + profiles: ["frontend", "full"]Alternative operational options (no code change required):
- Document
COMPOSE_PROFILES=full docker compose up -dfor “start everything by default”. (docs.docker.com)- Provide
make upthat runsdocker compose --profile full up -d.If you still want a concept of “default”, ensure the UI and README consistently show
--profile full(or--profile default) everywhere, and do not claim that plaindocker compose upstarts all. (docs.docker.com)Also applies to: 69-69, 114-114, 149-149
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
archon-ui-main/src/components/BackendStartupError.tsx(1 hunks)docker-compose.yml(4 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
{python/**/*.py,archon-ui-main/src/**/*.{ts,tsx,js,jsx}}
📄 CodeRabbit inference engine (CLAUDE.md)
{python/**/*.py,archon-ui-main/src/**/*.{ts,tsx,js,jsx}}: Remove dead code immediately; do not keep legacy/unused functions
Avoid comments that reference change history (e.g., LEGACY, CHANGED, REMOVED); keep comments focused on current functionality
Files:
archon-ui-main/src/components/BackendStartupError.tsx
archon-ui-main/src/components/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place reusable UI components in archon-ui-main/src/components/
Files:
archon-ui-main/src/components/BackendStartupError.tsx
- Remove profile restrictions from all services so they start with 'docker compose up' - All services now run by default without requiring --profile flags - Profile functionality removed - users now use default behavior only - This enables the requested 'docker compose up --build -d' workflow
- Change from generic YOUR_PROFILE to specific 'full' profile - Add note explaining users can replace 'full' if needed - Maintains clarity while providing flexibility for different profiles
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (1)
docker-compose.yml (1)
2-9: Update Docker Compose header comments to reflect actual behaviorThe current comments imply the existence of
backend,frontend, andfullprofiles, but no service in this repository declares aprofiles:key. As a result, invokingdocker compose --profile <name>has no effect. Please replace the header block with language that accurately describes how profiles work and how to add them if desired.Apply this doc-only diff:
@@ docker-compose.yml -# Docker Compose Profiles Strategy: -# - No profile: All services start by default when running 'docker compose up' -# - "backend": Starts only backend services (server, mcp, agents) for hybrid development -# - "frontend": Starts only the frontend UI service -# - "full": Starts all services for complete Docker deployment (same as no profile) -# Use --profile flag to control which services start: -# docker compose up # All services (default behavior) -# docker compose --profile backend up # Backend only for hybrid dev -# docker compose --profile full up # Everything in Docker (same as default) +# Docker Compose behavior overview: +# - No service profiles are defined in this file, so `docker compose up` starts every service by default. +# - To enable selective service startup (e.g., `backend`, `frontend`, `full`), add `profiles: ["<name>"]` +# under each service and use: +# docker compose --profile <name> up +# or set the COMPOSE_PROFILES environment variable: +# COMPOSE_PROFILES=<name> docker compose up
🧹 Nitpick comments (1)
docker-compose.yml (1)
4-4: YAML lint: trailing spacesLine 4 has trailing spaces which triggers YAMLlint’s trailing-spaces rule. Remove the extra spaces at the end of the line.
-# - "frontend": Starts only the frontend UI service +# - "frontend": Starts only the frontend UI service
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
docker-compose.yml(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-21T11:22:33.541Z
Learnt from: CR
PR: coleam00/Archon#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-21T11:22:33.541Z
Learning: Applies to archon-ui-main/test/** : Place frontend tests under archon-ui-main/test/
Applied to files:
docker-compose.yml
🪛 YAMLlint (1.37.1)
docker-compose.yml
[error] 4-4: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Backend Tests (Python + pytest)
🔇 Additional comments (1)
docker-compose.yml (1)
11-167: Profiles referenced in PR description don’t exist in this file; reconcile intent vs. implementationThe PR description claims a “default” profile was added to all services and that backend/frontend/full profiles are preserved. In this compose file, no service declares any
profiles:key at all. That implementation is fine if the goal is “docker compose up starts everything,” but it contradicts the stated preservation of profile-based workflows.Please confirm intended behavior:
- If you want default “start everything” and do not need profiles: keep the current file and update PR text/docs accordingly (preferred for simplicity).
- If you must preserve selectable profiles: reintroduce
profiles:per service and drop the expectation thatdocker compose upstarts everything without--profile(or requireCOMPOSE_PROFILES=full). There is no special built-in “default” profile in Compose.
- Update error modal to show default 'docker compose up --build -d' command - Add better organized note structure with bullet points - Include profile-specific fallback example for existing users - Update README Quick Start to show default command first - Maintain backward compatibility guidance for profile users
|
@TimothiousAI thx, I merged your changes into this. please check if it ok |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
README.md (1)
80-85: Label profile-based commands as optional in docsTo avoid confusion now that no profile is required by default, update all README examples to show the default command first, then the profile-based variant labeled explicitly as optional.
Affected locations:
- README.md lines 80–85 (Quick Start “docker compose” snippet)
- “🔄 Database Reset → Restart Services” snippet (around line 127)
- “After changing hostname or ports” instructions (around line 328)
Suggested diffs:
- Quick Start snippet (README.md 80–85)
```bash docker compose up --build -d
or, to match a previously used explicit profile:
Optional: if you previously used an explicit profile and want to keep using it:
docker compose --profile full up --build -dor
make dev-docker # (Alternative: Requires make installed )2. Database Reset → Restart Services (around line 127) ```diff 3. **Restart Services**: ```bash - docker compose --profile full up -d + docker compose up -d + # Optional: if you previously used an explicit profile and want to keep using it: + docker compose --profile full up -d ```
- After changing hostname or ports (around line 328)
1. Restart Docker containers:
`docker compose down && docker compose --profile full up -d`
`docker compose down && docker compose up -d`# Optional: if you previously used an explicit profile and want to keep using it:`docker compose down && docker compose --profile full up -d`archon-ui-main/src/components/BackendStartupError.tsx (1)
54-61: Make the profile note optional and improve semantics (ul/li) for accessibilitySince profiles are removed from docker-compose.yml, keep the example but mark it as optional for users who previously started with a profile. Also, replace pseudo-bullets with a list for better semantics.
- <div className="text-red-300 text-xs mt-2"> - <p>Note:</p> - <p>• Use 'down' and 'up' (not 'restart') so new env vars are picked up.</p> - <p>• If you originally started with a specific profile (backend, frontend, or full),</p> - <p> run the same profile again:</p> - <br /> - <code className="bg-black/50 px-1 rounded">docker compose --profile full up --build -d</code> - </div> + <div className="text-red-300 text-xs mt-2"> + <p className="font-semibold">Note:</p> + <ul className="list-disc list-inside space-y-1"> + <li> + Use <code className="bg-black/50 px-1 rounded">down</code> then{" "} + <code className="bg-black/50 px-1 rounded">up</code> (not{" "} + <code className="bg-black/50 px-1 rounded">restart</code>) so new env vars are picked up. + </li> + <li className="mt-1"> + Optional: if you previously used an explicit profile, you can still pass it: + <div className="mt-1"> + <code className="bg-black/50 px-1 rounded">docker compose --profile full up --build -d</code> + </div> + </li> + </ul> + </div>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
README.md(1 hunks)archon-ui-main/src/components/BackendStartupError.tsx(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
{python/**/*.py,archon-ui-main/src/**/*.{ts,tsx,js,jsx}}
📄 CodeRabbit inference engine (CLAUDE.md)
{python/**/*.py,archon-ui-main/src/**/*.{ts,tsx,js,jsx}}: Remove dead code immediately; do not keep legacy/unused functions
Avoid comments that reference change history (e.g., LEGACY, CHANGED, REMOVED); keep comments focused on current functionality
Files:
archon-ui-main/src/components/BackendStartupError.tsx
archon-ui-main/src/components/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place reusable UI components in archon-ui-main/src/components/
Files:
archon-ui-main/src/components/BackendStartupError.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Backend Tests (Python + pytest)
🔇 Additional comments (1)
archon-ui-main/src/components/BackendStartupError.tsx (1)
52-52: Good call adding --build to the recovery commandThis makes the guidance more reliable when env or code changed.
Pull Request
Summary
Enables
docker compose up --build -dto work without requiring profile flags by removing profile restrictions from all services. Also incorporates UX improvements from PR #443 with better error documentation and README examples.Changes Made
docker compose upcommandType of Change
Affected Services
Testing
Test Evidence
Checklist
Breaking Changes
Profile functionality removed: The previous profile-based selective service startup has been removed. All services now start by default.
Migration: Users who previously used
docker compose --profile full upcan now simply usedocker compose up.Additional Notes
Problem Solved
The original issue was that
docker compose up --build -dreturned "no service selected" because all services were restricted to specific profiles. This PR solves the core requirement and incorporates UX improvements.Key Insight
Docker Compose profiles exclude services from default startup. Services with profiles only run when those profiles are explicitly specified. To enable default startup, services must have no profile restrictions.
UX Improvements from PR #443
This PR incorporates the user experience improvements from PR #443:
Enhanced Error Modal:
docker compose down && docker compose up --build -d(no profile needed)docker compose --profile full up --build -das secondary option for existing usersImproved README Quick Start:
docker compose up --build -das primary commandCurrent Behavior
docker compose up --build -d✅ Starts all services (primary requirement met)Commit History
Future Considerations
If selective service startup is needed in the future (e.g., backend-only for hybrid development), this can be implemented through:
User Experience: The primary user request is now satisfied with enhanced UX -
docker compose up --build -dworks as expected with clear documentation for all user scenarios.