-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[19.03 backport] Detect Windows absolute paths on non-Windows CLI #1995
[19.03 backport] Detect Windows absolute paths on non-Windows CLI #1995
Conversation
When deploying a stack using a relative path as bind-mount source in the compose file, the CLI converts the relative path to an absolute path, relative to the location of the docker-compose file. This causes a problem when deploying a stack that uses an absolute Windows path, because a non-Windows client will fail to detect that the path (e.g. `C:\somedir`) is an absolute path (and not a relative directory named `C:\`). The existing code did already take Windows clients deploying a Linux stack into account (by checking if the path had a leading slash). This patch adds the reverse, and adds detection for Windows absolute paths on non-Windows clients. The code used to detect Windows absolute paths is copied from the Golang filepath package; https://github.com/golang/go/blob/1d0e94b1e13d5e8a323a63cd1cc1ef95290c9c36/src/path/filepath/path_windows.go#L12-L65 Signed-off-by: Sebastiaan van Stijn <[email protected]> (cherry picked from commit d6dd08d) Signed-off-by: Sebastiaan van Stijn <[email protected]>
Codecov Report
@@ Coverage Diff @@
## 19.03 #1995 +/- ##
==========================================
+ Coverage 56.71% 56.75% +0.04%
==========================================
Files 310 311 +1
Lines 21789 21819 +30
==========================================
+ Hits 12357 12384 +27
- Misses 8519 8521 +2
- Partials 913 914 +1 |
1 similar comment
Codecov Report
@@ Coverage Diff @@
## 19.03 #1995 +/- ##
==========================================
+ Coverage 56.71% 56.75% +0.04%
==========================================
Files 310 311 +1
Lines 21789 21819 +30
==========================================
+ Hits 12357 12384 +27
- Misses 8519 8521 +2
- Partials 913 914 +1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
moving this to the 19.03.1 milestone (don't merge yet) |
this is ok to merge now |
backport of #1990
Note that there is an alternative PR in #1871, but that PR changes the current behaviour, and might require more discussion. This PR tries to focus on just the basic problem.
addresses #1403
addresses moby/moby#33746
fixes moby/moby#34810
When deploying a stack using a relative path as bind-mount source in the compose file, the CLI converts the relative path to an absolute path, relative to the location of the docker-compose file.
This causes a problem when deploying a stack that uses an absolute Windows path, because a non Windows client will fail to detect that the path (e.g.
C:\somedir
) is an absolute path (and not a relative directory namedC:\
).The existing code did already take Windows clients deploying a Linux stack into account (by checking if the path had a leading slash). This patch adds the reverse, and adds detection for Windows absolute paths on non-Windows clients.
The code used to detect Windows absolute paths is copied from the Golang filepath package;
https://github.com/golang/go/blob/1d0e94b1e13d5e8a323a63cd1cc1ef95290c9c36/src/path/filepath/path_windows.go#L12-L65
- Description for the changelog
- A picture of a cute animal (not mandatory but encouraged)