summaryrefslogtreecommitdiff
path: root/docker/api/build.py
diff options
context:
space:
mode:
Diffstat (limited to 'docker/api/build.py')
-rw-r--r--docker/api/build.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/docker/api/build.py b/docker/api/build.py
index 2a22759..d69985e 100644
--- a/docker/api/build.py
+++ b/docker/api/build.py
@@ -149,15 +149,7 @@ class BuildApiMixin(object):
lambda x: x != '' and x[0] != '#',
[l.strip() for l in f.read().splitlines()]
))
- if dockerfile and os.path.relpath(dockerfile, path).startswith(
- '..'):
- with open(dockerfile, 'r') as df:
- dockerfile = (
- '.dockerfile.{0:x}'.format(random.getrandbits(160)),
- df.read()
- )
- else:
- dockerfile = (dockerfile, None)
+ dockerfile = process_dockerfile(dockerfile, path)
context = utils.tar(
path, exclude=exclude, dockerfile=dockerfile, gzip=gzip
)
@@ -312,3 +304,22 @@ class BuildApiMixin(object):
)
else:
log.debug('No auth config found')
+
+
+def process_dockerfile(dockerfile, path):
+ if not dockerfile:
+ return (None, None)
+
+ abs_dockerfile = dockerfile
+ if not os.path.isabs(dockerfile):
+ abs_dockerfile = os.path.join(path, dockerfile)
+
+ if (os.path.splitdrive(path)[0] != os.path.splitdrive(abs_dockerfile)[0] or
+ os.path.relpath(abs_dockerfile, path).startswith('..')):
+ with open(abs_dockerfile, 'r') as df:
+ return (
+ '.dockerfile.{0:x}'.format(random.getrandbits(160)),
+ df.read()
+ )
+ else:
+ return (dockerfile, None)