mirror of https://github.com/docker/compose.git
Add "network" field to build configuration
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
0916f124d0
commit
d475e0c1e3
|
@ -975,6 +975,7 @@ def merge_build(output, base, override):
|
||||||
md = MergeDict(to_dict(base), to_dict(override))
|
md = MergeDict(to_dict(base), to_dict(override))
|
||||||
md.merge_scalar('context')
|
md.merge_scalar('context')
|
||||||
md.merge_scalar('dockerfile')
|
md.merge_scalar('dockerfile')
|
||||||
|
md.merge_scalar('network')
|
||||||
md.merge_mapping('args', parse_build_arguments)
|
md.merge_mapping('args', parse_build_arguments)
|
||||||
md.merge_field('cache_from', merge_unique_items_lists, default=[])
|
md.merge_field('cache_from', merge_unique_items_lists, default=[])
|
||||||
md.merge_mapping('labels', parse_labels)
|
md.merge_mapping('labels', parse_labels)
|
||||||
|
|
|
@ -60,7 +60,8 @@
|
||||||
"dockerfile": {"type": "string"},
|
"dockerfile": {"type": "string"},
|
||||||
"args": {"$ref": "#/definitions/list_or_dict"},
|
"args": {"$ref": "#/definitions/list_or_dict"},
|
||||||
"labels": {"$ref": "#/definitions/list_or_dict"},
|
"labels": {"$ref": "#/definitions/list_or_dict"},
|
||||||
"cache_from": {"$ref": "#/definitions/list_of_strings"}
|
"cache_from": {"$ref": "#/definitions/list_of_strings"},
|
||||||
|
"network": {"type": "string"}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
}
|
}
|
||||||
|
|
|
@ -906,7 +906,8 @@ class Service(object):
|
||||||
dockerfile=build_opts.get('dockerfile', None),
|
dockerfile=build_opts.get('dockerfile', None),
|
||||||
cache_from=build_opts.get('cache_from', None),
|
cache_from=build_opts.get('cache_from', None),
|
||||||
labels=build_opts.get('labels', None),
|
labels=build_opts.get('labels', None),
|
||||||
buildargs=build_args
|
buildargs=build_args,
|
||||||
|
network_mode=build_opts.get('network', None),
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -717,6 +717,30 @@ class ServiceTest(DockerClientTestCase):
|
||||||
assert service.image()
|
assert service.image()
|
||||||
assert service.image()['Config']['Labels']['com.docker.compose.test'] == 'true'
|
assert service.image()['Config']['Labels']['com.docker.compose.test'] == 'true'
|
||||||
|
|
||||||
|
def test_build_with_network(self):
|
||||||
|
base_dir = tempfile.mkdtemp()
|
||||||
|
self.addCleanup(shutil.rmtree, base_dir)
|
||||||
|
with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
|
||||||
|
f.write('FROM busybox\n')
|
||||||
|
f.write('RUN ping -c1 google.local\n')
|
||||||
|
|
||||||
|
net_container = self.client.create_container(
|
||||||
|
'busybox', 'top', host_config=self.client.create_host_config(
|
||||||
|
extra_hosts={'google.local': '8.8.8.8'}
|
||||||
|
), name='composetest_build_network'
|
||||||
|
)
|
||||||
|
|
||||||
|
self.addCleanup(self.client.remove_container, net_container, force=True)
|
||||||
|
self.client.start(net_container)
|
||||||
|
|
||||||
|
service = self.create_service('buildwithnet', build={
|
||||||
|
'context': text_type(base_dir),
|
||||||
|
'network': 'container:{}'.format(net_container['Id'])
|
||||||
|
})
|
||||||
|
|
||||||
|
service.build()
|
||||||
|
assert service.image()
|
||||||
|
|
||||||
def test_start_container_stays_unprivileged(self):
|
def test_start_container_stays_unprivileged(self):
|
||||||
service = self.create_service('web')
|
service = self.create_service('web')
|
||||||
container = create_and_start_container(service).inspect()
|
container = create_and_start_container(service).inspect()
|
||||||
|
|
|
@ -473,6 +473,7 @@ class ServiceTest(unittest.TestCase):
|
||||||
buildargs={},
|
buildargs={},
|
||||||
labels=None,
|
labels=None,
|
||||||
cache_from=None,
|
cache_from=None,
|
||||||
|
network_mode=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_ensure_image_exists_no_build(self):
|
def test_ensure_image_exists_no_build(self):
|
||||||
|
@ -511,6 +512,7 @@ class ServiceTest(unittest.TestCase):
|
||||||
buildargs={},
|
buildargs={},
|
||||||
labels=None,
|
labels=None,
|
||||||
cache_from=None,
|
cache_from=None,
|
||||||
|
network_mode=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_build_does_not_pull(self):
|
def test_build_does_not_pull(self):
|
||||||
|
|
Loading…
Reference in New Issue