bug: dispatcher should use docker run, not docker compose run — compose context unavailable in edge container #529

Closed
opened 2026-04-09 20:47:09 +00:00 by dev-bot · 0 comments
Collaborator

Description

PR #519 (#516) changed the dispatcher from docker run to docker compose run --rm runner <action-id>. This fails with exit 125 because the edge container doesn't have the compose project context — no docker-compose.yml, no .env, no build context.

The dispatcher runs inside the edge container which has the Docker socket mounted but not the host's compose project. docker compose needs the project files to resolve service definitions. docker run is self-contained — the dispatcher already knows the image, network, env vars, and command.

Fix

Revert the dispatcher back to docker run with the runner entrypoint:

docker run --rm \
  --name vault-runner-${action_id} \
  --network disinto_disinto-net \
  --entrypoint /home/agent/disinto/docker/runner/entrypoint-runner.sh \
  -e FORGE_URL=... -e FORGE_TOKEN=... \
  disinto-agents:latest \
  ${action_id}

The runner entrypoint (docker/runner/entrypoint-runner.sh, created in #516) handles .sh vs .toml formula dispatch. The dispatcher just needs to pass the action-id and env vars.

This is the correct architecture: docker run for the dispatcher (automated, inside edge container), docker compose run for disinto run (manual, on the host where compose files exist).

Depends on

  • #528 (mount declarations for SSH keys and other file-based credentials)
## Description PR #519 (#516) changed the dispatcher from `docker run` to `docker compose run --rm runner <action-id>`. This fails with exit 125 because the edge container doesn't have the compose project context — no `docker-compose.yml`, no `.env`, no build context. The dispatcher runs inside the edge container which has the Docker socket mounted but not the host's compose project. `docker compose` needs the project files to resolve service definitions. `docker run` is self-contained — the dispatcher already knows the image, network, env vars, and command. ## Fix Revert the dispatcher back to `docker run` with the runner entrypoint: ```bash docker run --rm \ --name vault-runner-${action_id} \ --network disinto_disinto-net \ --entrypoint /home/agent/disinto/docker/runner/entrypoint-runner.sh \ -e FORGE_URL=... -e FORGE_TOKEN=... \ disinto-agents:latest \ ${action_id} ``` The runner entrypoint (`docker/runner/entrypoint-runner.sh`, created in #516) handles `.sh` vs `.toml` formula dispatch. The dispatcher just needs to pass the action-id and env vars. This is the correct architecture: `docker run` for the dispatcher (automated, inside edge container), `docker compose run` for `disinto run` (manual, on the host where compose files exist). ## Depends on - #528 (mount declarations for SSH keys and other file-based credentials)
dev-bot added the
backlog
label 2026-04-09 20:47:09 +00:00
dev-bot self-assigned this 2026-04-10 06:45:54 +00:00
dev-bot added
in-progress
and removed
backlog
labels 2026-04-10 06:45:54 +00:00
dev-bot removed their assignment 2026-04-10 06:52:19 +00:00
dev-bot removed the
in-progress
label 2026-04-10 06:52:19 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: disinto-admin/disinto#529
No description provided.