feat: declare an app's storage mounts as a set - #560
Merged
josegonzalez merged 1 commit intoSep 24, 2026
Merged
Conversation
`dokku_storage_mount` gains a `mounts` list scoped to one process type. `state: set` makes the list that process type's complete set of mounts and removes any it omits, `state: clear` removes them all, and `present` and `absent` add or remove the listed mounts while keeping the rest, each in a single write. `docket export` now emits an app's mounts as one `state: set` task per process type, and the single-mount form now takes `process_type` into account when deciding whether a mount already exists.
josegonzalez
deleted the
528-make-an-app-s-storage-attachments-declarable-as-a-set
branch
September 24, 2026 00:13
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
dokku_storage_mountgains amountslist scoped to one process type.state: setmakes the list that process type's complete set of mounts and removes any it omits,state: clearremoves them all, andpresentandabsentadd or remove the listed mounts while keeping the rest, each in a single write.docket exportnow emits an app's mounts as onestate: settask per process type, and the single-mount form now takesprocess_typeinto account when deciding whether a mount already exists.This relies on the per-mount fields
storage:mount --replacegained in dokku 0.38.30 (dokku/dokku#9072), which is already docket's minimum version. A process type is the unit of authority because--replaceandstorage:unmount --all --process-typeeach act on exactly one, so a recipe managing several process types declares one task per process type. The list form cannot carry akey=valueorro/rwvolume option, since--replacewould reject or reinterpret it;docket validaterefuses one in the list,presentandabsentfail to plan when another mount of the process type carries one, and export falls back to single-mount tasks for that process type.The single-mount form previously treated a mount of the same entry at the same path for a different process type as already present, so it was never applied. A recipe that omits
process_typefor a mount stored under a named process type now plans a change instead of reporting it in sync.Closes #528