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

[19.03 backport] Detect Windows absolute paths on non-Windows CLI #1995

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 #1995 into 19.03 will increase coverage by 0.04%.
The diff coverage is 90.32%.

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

Codecov Report

Merging #1995 into 19.03 will increase coverage by 0.04%.
The diff coverage is 90.32%.

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

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

@thaJeztah thaJeztah changed the title [WIP][19.03 backport] Detect Windows absolute paths on non-Windows CLI [19.03 backport] Detect Windows absolute paths on non-Windows CLI Jul 11, 2019
Copy link
Contributor

@kolyshkin kolyshkin 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: 19.03.0, 19.03.1 Jul 18, 2019
@thaJeztah
Copy link
Member Author

moving this to the 19.03.1 milestone (don't merge yet)

@thaJeztah thaJeztah modified the milestones: 19.03.1, 19.03.2 Jul 26, 2019
@thaJeztah
Copy link
Member Author

this is ok to merge now

@thaJeztah thaJeztah merged commit d473c60 into docker:19.03 Jul 26, 2019
@thaJeztah thaJeztah deleted the 19.03_backport_cross_platform_bind branch July 28, 2019 14:36
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.

5 participants