diff --git a/compose/config/config.py b/compose/config/config.py index 8200900f8..86f0aa3be 100644 --- a/compose/config/config.py +++ b/compose/config/config.py @@ -562,6 +562,12 @@ def normalize_v1_service_format(service_dict): service_dict['logging']['options'] = 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 diff --git a/compose/config/service_schema_v2.json b/compose/config/service_schema_v2.json index 23d0381c7..8623507a3 100644 --- a/compose/config/service_schema_v2.json +++ b/compose/config/service_schema_v2.json @@ -45,7 +45,6 @@ "devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, "dns": {"$ref": "#/definitions/string_or_list"}, "dns_search": {"$ref": "#/definitions/string_or_list"}, - "dockerfile": {"type": "string"}, "domainname": {"type": "string"}, "entrypoint": { "oneOf": [ diff --git a/tests/unit/config/config_test.py b/tests/unit/config/config_test.py index ddb992fd5..5146df1e9 100644 --- a/tests/unit/config/config_test.py +++ b/tests/unit/config/config_test.py @@ -430,23 +430,35 @@ class ConfigTest(unittest.TestCase): self.assertEqual(service[0]['build']['dockerfile'], 'Dockerfile-alt') def test_config_build_configuration_v2(self): - service = config.load( - build_config_details( - { - 'version': 2, - 'services': { - 'web': { - 'build': '.', - 'dockerfile': 'Dockerfile-alt' + # service.dockerfile is invalid in v2 + with self.assertRaises(ConfigurationError): + config.load( + build_config_details( + { + 'version': 2, + 'services': { + 'web': { + 'build': '.', + 'dockerfile': 'Dockerfile-alt' + } } - } - }, - 'tests/fixtures/extends', - 'filename.yml' + }, + 'tests/fixtures/extends', + 'filename.yml' + ) ) - ).services - self.assertTrue('context' in service[0]['build']) - self.assertEqual(service[0]['build']['dockerfile'], 'Dockerfile-alt') + + service = config.load( + build_config_details({ + 'version': 2, + 'services': { + 'web': { + 'build': '.' + } + } + }, 'tests/fixtures/extends', 'filename.yml') + ).services[0] + self.assertTrue('context' in service['build']) service = config.load( build_config_details(