One message and one page of documentation, made honest.
Fixed
-
The README said the compose label holds the host path. It does not. It holds the path whatever created the stack saw — a host path when you ran
docker composeyourself, and a container-internal one when a stack manager did. The example alongside it (/opt/stacks:/opt/stacks) reinforced the wrong idea, and at least one person set up their mount from it and then spent a week wondering why nothing matched (#2, @NotRetarded). The section now says which case is which, and shows the one command that answers it:docker inspect <container> --format '{{index .Config.Labels "com.docker.compose.project.config_files"}}'
Read the label first, then mount so that this exact path resolves inside Docksentry — everything below it stays inside the mount, and one mount covers every stack the manager holds.
Changed
- When a compose file cannot be reached, the message says whose path it is. Portainer keeps stacks at
/data/compose/<id>/inside its own container, Dockhand and Dockge-style managers at/app/data/stacks/. Neither exists on the host, so "mount that directory" was advice nobody could follow. A recognised path now names the manager and the exact mount point; an unrecognised one keeps the general advice, because a confident wrong name is worse than no name. Only managers whose internal path actually differs from the host's are listed — Dockge mounts its stacks at the identical path, so there is nothing to map and nothing to warn about.