deploy --dry-run fails on a merged digest that isn't pulled yet #348

Closed
opened 2026-10-01 12:59:19 -04:00 by mysticalsoap · 0 comments
Owner

just deploy --dry-run after merging a Renovate digest bump, before anything pulled the new image:

  ERROR: dry run failed for /opt/docker/infra/compose.yml:
 Image postgres:18.6-alpine@sha256:77f58511… Pulling
 Image postgres:18.6-alpine@sha256:77f58511… Pulled
 Container authelia-postgres Recreate
 Container authelia-postgres Error response from daemon: No such image: postgres:18.6-alpine@sha256:77f58511…
error: recipe `deploy` failed on line 111 with exit code 1

Compose's dry run only pretends to pull, then its simulated recreate asks the daemon for the image and gets nothing. So the one case the dry run exists for after a Renovate merge (new digest, not yet pulled) is the case where it errors instead of listing the container. Seen 2026-10-01 after #308–#314 landed together.

Options: deploy.py runs compose pull -q for each stack before the dry run (a pull changes no live state, and the real deploy pulls anyway), or it catches "No such image" and reports the container as "recreate: image not pulled" without failing the stack. The first keeps the decision compose's, which is the point of #306.

`just deploy --dry-run` after merging a Renovate digest bump, before anything pulled the new image: ``` ERROR: dry run failed for /opt/docker/infra/compose.yml: Image postgres:18.6-alpine@sha256:77f58511… Pulling Image postgres:18.6-alpine@sha256:77f58511… Pulled Container authelia-postgres Recreate Container authelia-postgres Error response from daemon: No such image: postgres:18.6-alpine@sha256:77f58511… error: recipe `deploy` failed on line 111 with exit code 1 ``` Compose's dry run only pretends to pull, then its simulated recreate asks the daemon for the image and gets nothing. So the one case the dry run exists for after a Renovate merge (new digest, not yet pulled) is the case where it errors instead of listing the container. Seen 2026-10-01 after #308–#314 landed together. Options: `deploy.py` runs `compose pull -q` for each stack before the dry run (a pull changes no live state, and the real deploy pulls anyway), or it catches "No such image" and reports the container as "recreate: image not pulled" without failing the stack. The first keeps the decision compose's, which is the point of #306.
Sign in to join this conversation.
No milestone
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
mysticalsoap/docker#348
No description provided.