feat: add Docker Compose development environment#33
feat: add Docker Compose development environment#33Bajuzjefe wants to merge 2 commits intomasumi-network:mainfrom
Conversation
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).
|
|
||
| # 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 "." |
There was a problem hiding this comment.
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.
| condition: service_healthy | ||
| temporal: | ||
| condition: service_started | ||
| command: ["koco", "temporal-worker"] |
There was a problem hiding this comment.
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.
| ## Setup | ||
|
|
||
| 1. Fork `masumi-network/kodosumi` to `jakubstefanik/kodosumi` | ||
| 2. Clone to `/Users/dominika/Projects/masumi-experimentation/kodosumi` |
There was a problem hiding this comment.
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.


Summary
Dockerfile(Python 3.11-slim, all optional deps)docker-compose.ymlfor full stack: panel + spooler + ray + postgres + redisdocker-compose.dev.ymlfor lightweight dev mode with code mountingdocker-compose.override.yml.exampleas template for custom config--profile temporalflagdocs/docker.mdAddresses issue #11 (provide containers).
Test plan
docker compose up→ all services start, panel at http://localhost:3370docker compose -f docker-compose.dev.yml up→ dev mode with code mountdocker compose --profile temporal up→ Temporal + UI + worker added