Fix handling of service.dockerfile key

Made invalid in v2 format
Doesn't break build config anymore

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2016-01-14 12:10:42 -08:00
parent 9cfa71ceee
commit 13063a96cb
3 changed files with 33 additions and 16 deletions

View File

@ -562,6 +562,12 @@ def normalize_v1_service_format(service_dict):
service_dict['logging']['options'] = service_dict['log_opt'] service_dict['logging']['options'] = service_dict['log_opt']
del service_dict['log_opt'] del service_dict['log_opt']
if 'dockerfile' in service_dict:
service_dict['build'] = service_dict.get('build', {})
service_dict['build'].update({
'dockerfile': service_dict.pop('dockerfile')
})
return service_dict return service_dict

View File

@ -45,7 +45,6 @@
"devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, "devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
"dns": {"$ref": "#/definitions/string_or_list"}, "dns": {"$ref": "#/definitions/string_or_list"},
"dns_search": {"$ref": "#/definitions/string_or_list"}, "dns_search": {"$ref": "#/definitions/string_or_list"},
"dockerfile": {"type": "string"},
"domainname": {"type": "string"}, "domainname": {"type": "string"},
"entrypoint": { "entrypoint": {
"oneOf": [ "oneOf": [

View File

@ -430,23 +430,35 @@ class ConfigTest(unittest.TestCase):
self.assertEqual(service[0]['build']['dockerfile'], 'Dockerfile-alt') self.assertEqual(service[0]['build']['dockerfile'], 'Dockerfile-alt')
def test_config_build_configuration_v2(self): def test_config_build_configuration_v2(self):
service = config.load( # service.dockerfile is invalid in v2
build_config_details( with self.assertRaises(ConfigurationError):
{ config.load(
'version': 2, build_config_details(
'services': { {
'web': { 'version': 2,
'build': '.', 'services': {
'dockerfile': 'Dockerfile-alt' 'web': {
'build': '.',
'dockerfile': 'Dockerfile-alt'
}
} }
} },
}, 'tests/fixtures/extends',
'tests/fixtures/extends', 'filename.yml'
'filename.yml' )
) )
).services
self.assertTrue('context' in service[0]['build']) service = config.load(
self.assertEqual(service[0]['build']['dockerfile'], 'Dockerfile-alt') build_config_details({
'version': 2,
'services': {
'web': {
'build': '.'
}
}
}, 'tests/fixtures/extends', 'filename.yml')
).services[0]
self.assertTrue('context' in service['build'])
service = config.load( service = config.load(
build_config_details( build_config_details(