Skip to content
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

Merged

Conversation

thaJeztah
Copy link
Member

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 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

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

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-io
Copy link

Codecov Report

Merging #1994 into 18.09 will increase coverage by 0.05%.
The diff coverage is 90.32%.

@@            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-io
Copy link

Codecov Report

Merging #1994 into 18.09 will increase coverage by 0.05%.
The diff coverage is 90.32%.

@@            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

Copy link
Contributor

@silvin-lubecki silvin-lubecki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Collaborator

@vdemeester vdemeester left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🐯

@thaJeztah thaJeztah modified the milestones: 18.09.8, 18.09.9 Jul 18, 2019
@thaJeztah thaJeztah changed the title [WIP][18.09 backport] Detect Windows absolute paths on non-Windows CLI [18.09 backport] Detect Windows absolute paths on non-Windows CLI Jul 23, 2019
@kolyshkin kolyshkin merged commit 3d0a1f6 into docker:18.09 Jul 23, 2019
@thaJeztah thaJeztah deleted the 18.09_backport_cross_platform_bind branch July 23, 2019 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants