diff --git a/docker/client.py b/docker/client.py index 26adf28696..5d112aca20 100644 --- a/docker/client.py +++ b/docker/client.py @@ -297,6 +297,12 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None, if os.path.exists(dockerignore): with open(dockerignore, 'r') as f: exclude = list(filter(bool, f.read().split('\n'))) + # These are handled by the docker daemon and should not be + # excluded on the client + if 'Dockerfile' in exclude: + exclude.remove('Dockerfile') + if '.dockerignore' in exclude: + exclude.remove(".dockerignore") context = utils.tar(path, exclude=exclude) if utils.compare_version('1.8', self._version) >= 0: diff --git a/tests/integration_test.py b/tests/integration_test.py index 869d61e852..e6a94e1aba 100644 --- a/tests/integration_test.py +++ b/tests/integration_test.py @@ -1311,6 +1311,8 @@ def runTest(self): with open(os.path.join(base_dir, '.dockerignore'), 'w') as f: f.write("\n".join([ 'node_modules', + 'Dockerfile', + '.dockerginore', '', # empty line ])) @@ -1329,6 +1331,8 @@ def runTest(self): chunk = chunk.decode('utf-8') logs += chunk self.assertFalse('node_modules' in logs) + self.assertFalse('Dockerfile' in logs) + self.assertFalse('.dockerginore' in logs) self.assertTrue('not-ignored' in logs) #######################