Skip to content

🐞 Bug: Pulled image not retagged with original tag after update (standalone Projects and Swarm stacks) #3792

Description

@abrbon

Bug Description

When Arcane updates a container to a newer image that was pulled under the same tag (e.g. latest or traefik:v3), the newly pulled image is not automatically retagged locally with that same tag. I've observed this in two different update paths, both on already-existing (not freshly created) projects/stacks:

  1. Standalone Projects (non-Swarm) — using the "Update Container" action on the Resources → Updates page for a service within an existing Compose project.
  2. Docker Swarm stacks — after making a small edit to an existing stack and clicking "Save", which triggers Arcane to redeploy the stack (even when the image tag itself wasn't changed).

I intentionally pin several images to a specific tag rather than latest.

I have not tested this against a freshly created project or stack — only against existing, previously-deployed ones.
I'd expect the same behavior there, but haven't verified it.

Steps To Reproduce

Standalone Projects (non-Swarm):

  1. Start from an existing, already-deployed Compose project with a service pinned to a specific, non-latest moving tag, e.g.:
    services:
    traefik:
    image: traefik:v3
    ...
  2. Wait for Arcane to detect an available update for that image (new digest published under the same v3 tag), or trigger a manual "Check for Updates".
  3. From the Resources → Updates page, use the row action "Update Container" for that service.
  4. After the update completes, inspect the local images: docker images | grep traefik and docker inspect <container> --format '{{.Config.Image}}'.

Docker Swarm stack:

  1. Start from an existing, already-deployed Swarm stack with a service pinned the same way, e.g. traefik:v3.
  2. Open the stack in Arcane, make a small edit (e.g. a trivial, non-image-related change), and click "Save" so the stack gets redeployed.
  3. Inspect the image reference: docker service inspect <service> --format '{{.Spec.TaskTemplate.ContainerSpec.Image}}' and docker images | grep traefik on the relevant node.

Expected Behavior

In both cases, the locally pulled image should be retagged with the same tag it had before the update (traefik:v3), consistent with normal docker pull/docker compose pull behavior. docker images should show traefik:v3 pointing at the new digest, with no old tag lingering on the previous digest, and the running container/service should reference the image by that tag.

Actual Behavior

After updating via either path, the newly pulled image is not automatically retagged with the pre-update tag (v3).
In the images the new image has as tag value.

Screenshots

No response

Arcane Version

v2.10.0

Installation Method

Docker Compose (Recommended)

Environment Type

Both Local and Remote Agents

Database Type

SQLite (Default)

Operating System

Linux

Docker Version

29.7.2

Browser & Version

Brave latest version (on MacOS)

Relevant Logs or Error Messages

Docker Compose Configuration

Environment Configuration (.env file)

Additional Context

I have observed this same tag-retagging problem in two distinct update code paths
— standalone (non-Swarm) Projects and Docker Swarm stacks —
which suggests either a shared underlying cause (e.g. in the image pull/tag handling shared by both flows) or two separate but similarly-behaving bugs. Filing as one combined report so the maintainers can determine whether it's one fix or two.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions