-
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
[18.09 backport] Detect Windows absolute paths on non-Windows CLI #1994
[18.09 backport] Detect Windows absolute paths on non-Windows CLI #1994
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 @@
## 18.09 #1994 +/- ##
==========================================
+ Coverage 54.23% 54.29% +0.05%
==========================================
Files 290 291 +1
Lines 19428 19458 +30
==========================================
+ Hits 10537 10564 +27
- Misses 8212 8214 +2
- Partials 679 680 +1 |
1 similar comment
Codecov Report
@@ Coverage Diff @@
## 18.09 #1994 +/- ##
==========================================
+ Coverage 54.23% 54.29% +0.05%
==========================================
Files 290 291 +1
Lines 19428 19458 +30
==========================================
+ Hits 10537 10564 +27
- Misses 8212 8214 +2
- Partials 679 680 +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 🐯
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)