Skip to content

Commit 5571d1a

Browse files
committed
Support 'buildargs' parameter for docker 1.9.
Signed-off-by: Leonty Balovnev <[email protected]>
1 parent 881e24c commit 5571d1a

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

docker/api/build.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import logging
22
import os
33
import re
4+
import json
45

56
from .. import constants
67
from .. import errors
@@ -16,7 +17,7 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None,
1617
nocache=False, rm=False, stream=False, timeout=None,
1718
custom_context=False, encoding=None, pull=False,
1819
forcerm=False, dockerfile=None, container_limits=None,
19-
decode=False):
20+
decode=False, buildargs=None):
2021
remote = context = headers = None
2122
container_limits = container_limits or {}
2223
if path is None and fileobj is None:
@@ -71,6 +72,14 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None,
7172
}
7273
params.update(container_limits)
7374

75+
if buildargs:
76+
if utils.version_gte(self._version, '1.21'):
77+
params.update({'buildargs': json.dumps(buildargs)})
78+
else:
79+
raise errors.InvalidVersion(
80+
'buildargs was only introduced in API version 1.21'
81+
)
82+
7483
if context is not None:
7584
headers = {'Content-Type': 'application/tar'}
7685
if encoding:

tests/integration/build_test.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,18 @@ def test_build_with_dockerignore(self):
9696
list(filter(None, logs.split('\n'))),
9797
['not-ignored'],
9898
)
99+
100+
@requires_api_version('1.21')
101+
def test_build_with_buildargs(self):
102+
script = io.BytesIO('\n'.join([
103+
'FROM scratch',
104+
'ARG test',
105+
'USER $test'
106+
]).encode('ascii'))
107+
108+
self.client.build(fileobj=script, tag='buildargs',
109+
buildargs={'test': 'OK'}, stream=True)
110+
self.tmp_imgs.append('buildargs')
111+
112+
info = self.client.inspect_image('buildargs')
113+
self.assertEqual(info['Config']['User'], 'OK')

0 commit comments

Comments
 (0)