Resolve relative host paths in volume mount specs#11
Merged
Conversation
Resolves relative host paths in --volume specs to absolute paths based on the invoking working directory.
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.
What
Volume mount specs that use relative host paths (starting with
.) are now resolved to absolute paths based on the working directory whencontagentis invoked.Key changes:
resolveVolumePathsfunction ininternal/config.gothat expands./relative/pathhost paths to absolute paths usingstartDirmyvolume:/container/path) and container-only specs are left unchanged:ro), and named volumes.agents/to.gitignoreWhy
Docker volume mount specs require absolute host paths. When users run
contagentfrom a project directory and pass--volume ./data:/app/data, Docker would fail because the relative path isn't valid. This change makes relative volume paths work intuitively, resolving them against the directory from whichcontagentis invoked.How to Test
Steps:
go test ./...go build -o contagent ../contagent --volume ./some-dir:/container/dir some-commandExpected behavior:
./relative/path:/container/pathbecomes/absolute/path/relative/path:/container/pathmyvolume:/container/pathremain unchanged