bug: edge Dockerfile build context wrong — COPY paths are repo-root-relative, init passes docker/edge/ as context #1116

Closed
opened 2026-04-21 12:48:59 +00:00 by dev-bot · 1 comment
Collaborator

Symptom

disinto init --backend=nomad --with edge fails building the edge image:

Step 4/8 : COPY docker/edge/entrypoint-edge.sh /usr/local/bin/entrypoint-edge.sh
COPY failed: file not found in build context or excluded by .dockerignore:
stat docker/edge/entrypoint-edge.sh: file does not exist

The file exists on disk at /opt/disinto/docker/edge/entrypoint-edge.sh.

Root cause

docker/edge/Dockerfile uses repo-root-relative COPY paths:

COPY docker/edge/entrypoint-edge.sh /usr/local/bin/entrypoint-edge.sh
COPY docker/chat/server.py /usr/local/bin/chat-server.py
COPY docker/chat/ui/ /var/chat/ui/

But bin/disinto line 981 passes ${FACTORY_ROOT}/docker/edge as the build context — so docker/edge/entrypoint-edge.sh resolves to ${FACTORY_ROOT}/docker/edge/docker/edge/entrypoint-edge.sh, which does not exist.

The agents image build on line 971 already uses ${FACTORY_ROOT} as context. Edge should match.

Reproduction

Fresh box, latest main:

disinto init --backend=nomad --with edge --yes
# after fixing #<bug2>, build fails with the COPY error

Fix

bin/disinto line 981 — change build context from ${FACTORY_ROOT}/docker/edge to ${FACTORY_ROOT}:

docker build -t "$tag" -f "${FACTORY_ROOT}/docker/edge/Dockerfile" "${FACTORY_ROOT}" 2>&1 | tail -5

Also update the dry-run echo on line 872.

Acceptance

  • disinto init --backend=nomad --with edge --yes builds disinto/edge:local successfully
  • Docker build context in init logs is repo root, not docker/edge subdir
## Symptom `disinto init --backend=nomad --with edge` fails building the edge image: ``` Step 4/8 : COPY docker/edge/entrypoint-edge.sh /usr/local/bin/entrypoint-edge.sh COPY failed: file not found in build context or excluded by .dockerignore: stat docker/edge/entrypoint-edge.sh: file does not exist ``` The file exists on disk at `/opt/disinto/docker/edge/entrypoint-edge.sh`. ## Root cause `docker/edge/Dockerfile` uses repo-root-relative COPY paths: ```dockerfile COPY docker/edge/entrypoint-edge.sh /usr/local/bin/entrypoint-edge.sh COPY docker/chat/server.py /usr/local/bin/chat-server.py COPY docker/chat/ui/ /var/chat/ui/ ``` But `bin/disinto` line 981 passes `${FACTORY_ROOT}/docker/edge` as the build context — so `docker/edge/entrypoint-edge.sh` resolves to `${FACTORY_ROOT}/docker/edge/docker/edge/entrypoint-edge.sh`, which does not exist. The agents image build on line 971 already uses `${FACTORY_ROOT}` as context. Edge should match. ## Reproduction Fresh box, latest main: ```bash disinto init --backend=nomad --with edge --yes # after fixing #<bug2>, build fails with the COPY error ``` ## Fix `bin/disinto` line 981 — change build context from `${FACTORY_ROOT}/docker/edge` to `${FACTORY_ROOT}`: ```bash docker build -t "$tag" -f "${FACTORY_ROOT}/docker/edge/Dockerfile" "${FACTORY_ROOT}" 2>&1 | tail -5 ``` Also update the dry-run echo on line 872. ## Acceptance - `disinto init --backend=nomad --with edge --yes` builds `disinto/edge:local` successfully - Docker build context in init logs is repo root, not docker/edge subdir
dev-bot added the
backlog
label 2026-04-21 12:48:59 +00:00
dev-bot self-assigned this 2026-04-21 13:30:11 +00:00
dev-bot added
in-progress
and removed
backlog
labels 2026-04-21 13:30:12 +00:00
Author
Collaborator

Blocked — issue #1116

Field Value
Exit reason ci_timeout
Timestamp 2026-04-21T14:01:30Z
### Blocked — issue #1116 | Field | Value | |---|---| | Exit reason | `ci_timeout` | | Timestamp | `2026-04-21T14:01:30Z` |
dev-bot added
blocked
and removed
in-progress
labels 2026-04-21 14:01:30 +00:00
disinto-admin added
backlog
and removed
blocked
labels 2026-04-21 15:11:33 +00:00
dev-bot was unassigned by disinto-admin 2026-04-21 15:11:34 +00:00
dev-bot self-assigned this 2026-04-21 16:29:54 +00:00
dev-bot added
in-progress
and removed
backlog
labels 2026-04-21 16:29:54 +00:00
dev-bot removed their assignment 2026-04-21 16:51:28 +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#1116
No description provided.