Skip to content

feat: add Docker Compose development environment#33

Open
Bajuzjefe wants to merge 2 commits intomasumi-network:mainfrom
Bajuzjefe:feat/docker-compose
Open

feat: add Docker Compose development environment#33
Bajuzjefe wants to merge 2 commits intomasumi-network:mainfrom
Bajuzjefe:feat/docker-compose

Conversation

@Bajuzjefe
Copy link

Summary

  • Add Dockerfile (Python 3.11-slim, all optional deps)
  • Add docker-compose.yml for full stack: panel + spooler + ray + postgres + redis
  • Add docker-compose.dev.yml for lightweight dev mode with code mounting
  • Add docker-compose.override.yml.example as template for custom config
  • Temporal services behind --profile temporal flag
  • Health checks on all infrastructure services (ray, postgres, redis)
  • Documentation at docs/docker.md

Addresses issue #11 (provide containers).

Test plan

  • docker compose up → all services start, panel at http://localhost:3370
  • docker compose -f docker-compose.dev.yml up → dev mode with code mount
  • docker compose --profile temporal up → Temporal + UI + worker added
  • Register and execute a sample agent flow via the panel
  • Verify Ray Dashboard accessible at http://localhost:8265

Research and plan for 4 scaling contributions to Kodosumi:
- PR 1: PostgreSQL support (alongside SQLite)
- PR 2: Redis Streams event transport (alongside Ray queue polling)
- PR 3: Temporal durable execution (alongside direct execution)
- PR 4: Docker Compose development environment

All features are opt-in via config with zero impact on default behavior.
Addresses upstream issues masumi-network#8 (scale spooler) and masumi-network#11 (provide containers).
Add containerized deployment for kodosumi with full stack and dev modes.

- Dockerfile: Python 3.11-slim with all optional dependency groups
- docker-compose.yml: panel + spooler + ray + postgres + redis
- docker-compose.dev.yml: lightweight dev setup with code mounting
- docker-compose.override.yml.example: template for custom config
- Temporal services behind --profile temporal flag
- Health checks on all infrastructure services
- docs/docker.md: setup guide, architecture, and configuration

Addresses issue masumi-network#11 (provide containers).
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.

Comment @cursor review or bugbot run to trigger another review on this PR


# Install with all optional dependency groups
RUN pip install --no-cache-dir -e ".[postgres,redis,temporal]" 2>/dev/null || \
pip install --no-cache-dir -e "."
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dockerfile silently fails to install optional dependencies

High Severity

The pyproject.toml only defines a tests optional-dependency group — postgres, redis, and temporal extras don't exist. The first pip install command silently fails (stderr redirected to /dev/null), and the fallback installs only the base package. The resulting Docker image lacks asyncpg, psycopg, redis, and temporalio, so all advertised optional features (PostgreSQL, Redis Streams, Temporal) will produce import errors at runtime. Users following docker-compose.override.yml.example or the --profile temporal docs will hit cryptic failures.

Fix in Cursor Fix in Web

condition: service_healthy
temporal:
condition: service_started
command: ["koco", "temporal-worker"]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Temporal worker references non-existent CLI command

Medium Severity

The temporal-worker service runs ["koco", "temporal-worker"], but no temporal-worker subcommand is defined in kodosumi/cli.py. When a user activates the temporal profile with docker compose --profile temporal up, this container will crash immediately with a Click usage error. The PR's test plan explicitly lists verifying this profile.

Fix in Cursor Fix in Web

## Setup

1. Fork `masumi-network/kodosumi` to `jakubstefanik/kodosumi`
2. Clone to `/Users/dominika/Projects/masumi-experimentation/kodosumi`
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accidentally committed personal local file path

Low Severity

The setup section contains a personal local path (/Users/dominika/Projects/masumi-experimentation/kodosumi) that appears to be internal development notes not intended for the public repository. The fork username (jakubstefanik) on line 11 also differs from Bajuzjefe referenced in SCALING.md, suggesting these are personal implementation notes.

Fix in Cursor Fix in Web

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