Skip to content

Conversation

Copy link

Copilot AI commented Dec 4, 2025

Developers need to selectively run services in Docker while developing others locally. This adds a profile-based docker-compose configuration where each service can be started independently with its dependencies automatically included.

Implementation

  • docker-compose.dev.yml: Profile-based service configuration

    • 11 profiles: all, database, messaging, sagittarius, sagittarius-web, sagittarius-grpc, runtime, aquila, taurus, draco, sculptor
    • Dependencies auto-included (postgres for sagittarius services, nats for rust services)
    • All ports, credentials, and URLs configurable via environment variables
    • Health checks for proper startup ordering
    • New runtime profile to start all runtime services (Aquila, Taurus, Draco) together with NATS
    • Uses correct ci-builds repository path: ghcr.io/code0-tech/reticulum/ci-builds/
    • Image tags are required pipeline IDs (no defaults) - must be specified in .env file
  • .env.example: Reference configuration showing all customizable variables (ports, database credentials, NATS URLs, runtime tokens, log levels, pipeline ID image tags)

  • dev.sh: Helper script for common operations with environment variable validation

    • Commands: start, stop, logs, ps, down, clean
    • Validates required pipeline ID environment variables before starting services
    • Provides helpful error messages when variables are missing
  • README.dev.md: Comprehensive documentation including profile explanations, common scenarios, service ports reference, troubleshooting, and pipeline ID image tag configuration guide

Usage

# Copy and configure environment file with pipeline IDs (REQUIRED)
cp .env.example .env
# Edit .env to set pipeline IDs for image tags

# Run all runtime services (Aquila + Taurus + Draco) together
./dev.sh start runtime

# Run Sagittarius with postgres automatically included
./dev.sh start sagittarius

# Run only database and messaging infrastructure
./dev.sh start database
./dev.sh start messaging

# Run everything
./dev.sh start all

Important Notes

  • Image tags are CI pipeline IDs, not git tags or version numbers
  • You must create a .env file with pipeline IDs - there are no defaults
  • Format examples: AQUILA_TAG=12345 or SAGITTARIUS_TAG=12345-ruby
  • The dev.sh script validates required environment variables and provides clear error messages if any are missing

Security Note

Default passwords are weak and suitable for local development only. .env is gitignored to prevent credential leaks.

Original prompt

This section details on the original issue you should resolve

<issue_title>Create dev docker-compose</issue_title>
<issue_description>Create a docker compose file for the dev environment. Each service should be associated with a profile so that you can decide which services run in docker and which services run locally</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 4 commits December 4, 2025 07:53
Co-authored-by: Knerio <96529060+Knerio@users.noreply.github.com>
Co-authored-by: Knerio <96529060+Knerio@users.noreply.github.com>
Co-authored-by: Knerio <96529060+Knerio@users.noreply.github.com>
Co-authored-by: Knerio <96529060+Knerio@users.noreply.github.com>
Copilot AI changed the title [WIP] Create docker compose file for dev environment Add profile-based docker-compose for development environments Dec 4, 2025
Copilot AI requested a review from Knerio December 4, 2025 08:03
Copilot finished work on behalf of Knerio December 4, 2025 08:03
@Knerio
Copy link
Member

Knerio commented Dec 4, 2025

@Taucher2003 @raphael-goetz do you think we could use that, because our current implementation sucks

@Knerio
Copy link
Member

Knerio commented Dec 4, 2025

@copilot We don’t have a latest tag, make that configurable which image is used, also add an „runtime“ profile to start Aquila, Taurus and draco

Co-authored-by: Knerio <96529060+Knerio@users.noreply.github.com>
Copy link
Author

Copilot AI commented Dec 4, 2025

@copilot We don’t have a latest tag, make that configurable which image is used, also add an „runtime“ profile to start Aquila, Taurus and draco

Done! Changes in commit 6a7542a:

  1. Made image tags configurable: All services now use environment variables for image tags (e.g., ${SAGITTARIUS_TAG:-latest}). Updated .env.example with defaults.

  2. Added "runtime" profile: New profile that starts Aquila, Taurus, and Draco together with NATS. Usage:

./dev.sh start runtime

The runtime profile automatically includes NATS as a dependency, and all three runtime services can now be started with a single command.

@github-actions
Copy link

github-actions bot commented Dec 4, 2025

No description provided.

Copilot finished work on behalf of Knerio December 4, 2025 09:22
@Knerio
Copy link
Member

Knerio commented Dec 4, 2025

@copilot the tags are pipeline ids and not git stuff

Co-authored-by: Knerio <96529060+Knerio@users.noreply.github.com>
Copy link
Author

Copilot AI commented Dec 4, 2025

@copilot the tags are pipeline ids and not git stuff

Fixed in commit a812ae2:

  1. Updated image paths: Changed from ghcr.io/code0-tech/SERVICE to ghcr.io/code0-tech/reticulum/ci-builds/SERVICE
  2. Removed default values: Tags now require explicit pipeline IDs (e.g., 12345 or 12345-ruby)
  3. Updated documentation: Clarified that tags are CI pipeline IDs, not git tags
  4. Updated .env.example: Provided example pipeline ID format with variants where needed

All services now use the correct ci-builds repository path and require pipeline IDs to be specified.

Co-authored-by: Knerio <96529060+Knerio@users.noreply.github.com>
Copilot finished work on behalf of Knerio December 4, 2025 09:33
@Knerio Knerio closed this Dec 4, 2025
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