diff --git a/docker/client.py b/docker/client.py index 88d435fb..42a523ec 100644 --- a/docker/client.py +++ b/docker/client.py @@ -297,6 +297,12 @@ class Client(requests.Session): 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 88d00dba..0b313e29 100644 --- a/tests/integration_test.py +++ b/tests/integration_test.py @@ -1325,6 +1325,8 @@ class TestBuildWithDockerignore(Cleanup, BaseTestCase): with open(os.path.join(base_dir, '.dockerignore'), 'w') as f: f.write("\n".join([ 'node_modules', + 'Dockerfile', + '.dockerginore', '', # empty line ])) @@ -1343,6 +1345,8 @@ class TestBuildWithDockerignore(Cleanup, BaseTestCase): 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) #######################