Add support for build arguments
Allows 'build' configuration option to be specified as an object and adds support for build args. Signed-off-by: Garrett Heel <garrettheel@gmail.com>
This commit is contained in:
parent
77b4ebc31f
commit
9cfa71ceee
9 changed files with 297 additions and 49 deletions
|
|
@ -294,7 +294,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
project='composetest',
|
||||
name='db',
|
||||
client=self.client,
|
||||
build='tests/fixtures/dockerfile-with-volume',
|
||||
build={'context': 'tests/fixtures/dockerfile-with-volume'},
|
||||
)
|
||||
|
||||
old_container = create_and_start_container(service)
|
||||
|
|
@ -315,7 +315,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
def test_execute_convergence_plan_when_image_volume_masks_config(self):
|
||||
service = self.create_service(
|
||||
'db',
|
||||
build='tests/fixtures/dockerfile-with-volume',
|
||||
build={'context': 'tests/fixtures/dockerfile-with-volume'},
|
||||
)
|
||||
|
||||
old_container = create_and_start_container(service)
|
||||
|
|
@ -346,7 +346,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
def test_execute_convergence_plan_without_start(self):
|
||||
service = self.create_service(
|
||||
'db',
|
||||
build='tests/fixtures/dockerfile-with-volume'
|
||||
build={'context': 'tests/fixtures/dockerfile-with-volume'}
|
||||
)
|
||||
|
||||
containers = service.execute_convergence_plan(ConvergencePlan('create', []), start=False)
|
||||
|
|
@ -450,7 +450,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
service = Service(
|
||||
name='test',
|
||||
client=self.client,
|
||||
build='tests/fixtures/simple-dockerfile',
|
||||
build={'context': 'tests/fixtures/simple-dockerfile'},
|
||||
project='composetest',
|
||||
)
|
||||
container = create_and_start_container(service)
|
||||
|
|
@ -463,7 +463,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
service = Service(
|
||||
name='test',
|
||||
client=self.client,
|
||||
build='this/does/not/exist/and/will/throw/error',
|
||||
build={'context': 'this/does/not/exist/and/will/throw/error'},
|
||||
project='composetest',
|
||||
)
|
||||
container = create_and_start_container(service)
|
||||
|
|
@ -483,7 +483,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
|
||||
f.write("FROM busybox\n")
|
||||
|
||||
self.create_service('web', build=base_dir).build()
|
||||
self.create_service('web', build={'context': base_dir}).build()
|
||||
assert self.client.inspect_image('composetest_web')
|
||||
|
||||
def test_build_non_ascii_filename(self):
|
||||
|
|
@ -496,7 +496,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
with open(os.path.join(base_dir.encode('utf8'), b'foo\xE2bar'), 'w') as f:
|
||||
f.write("hello world\n")
|
||||
|
||||
self.create_service('web', build=text_type(base_dir)).build()
|
||||
self.create_service('web', build={'context': text_type(base_dir)}).build()
|
||||
assert self.client.inspect_image('composetest_web')
|
||||
|
||||
def test_build_with_image_name(self):
|
||||
|
|
@ -508,16 +508,30 @@ class ServiceTest(DockerClientTestCase):
|
|||
|
||||
image_name = 'examples/composetest:latest'
|
||||
self.addCleanup(self.client.remove_image, image_name)
|
||||
self.create_service('web', build=base_dir, image=image_name).build()
|
||||
self.create_service('web', build={'context': base_dir}, image=image_name).build()
|
||||
assert self.client.inspect_image(image_name)
|
||||
|
||||
def test_build_with_git_url(self):
|
||||
build_url = "https://github.com/dnephin/docker-build-from-url.git"
|
||||
service = self.create_service('buildwithurl', build=build_url)
|
||||
service = self.create_service('buildwithurl', build={'context': build_url})
|
||||
self.addCleanup(self.client.remove_image, service.image_name)
|
||||
service.build()
|
||||
assert service.image()
|
||||
|
||||
def test_build_with_build_args(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("ARG build_version\n")
|
||||
|
||||
service = self.create_service('buildwithargs',
|
||||
build={'context': text_type(base_dir),
|
||||
'args': {"build_version": "1"}})
|
||||
service.build()
|
||||
assert service.image()
|
||||
|
||||
def test_start_container_stays_unpriviliged(self):
|
||||
service = self.create_service('web')
|
||||
container = create_and_start_container(service).inspect()
|
||||
|
|
|
|||
|
|
@ -266,13 +266,13 @@ class ServiceStateTest(DockerClientTestCase):
|
|||
dockerfile = context.join('Dockerfile')
|
||||
dockerfile.write(base_image)
|
||||
|
||||
web = self.create_service('web', build=str(context))
|
||||
web = self.create_service('web', build={'context': str(context)})
|
||||
container = web.create_container()
|
||||
|
||||
dockerfile.write(base_image + 'CMD echo hello world\n')
|
||||
web.build()
|
||||
|
||||
web = self.create_service('web', build=str(context))
|
||||
web = self.create_service('web', build={'context': str(context)})
|
||||
self.assertEqual(('recreate', [container]), web.convergence_plan())
|
||||
|
||||
def test_image_changed_to_build(self):
|
||||
|
|
@ -286,7 +286,7 @@ class ServiceStateTest(DockerClientTestCase):
|
|||
web = self.create_service('web', image='busybox')
|
||||
container = web.create_container()
|
||||
|
||||
web = self.create_service('web', build=str(context))
|
||||
web = self.create_service('web', build={'context': str(context)})
|
||||
plan = web.convergence_plan()
|
||||
self.assertEqual(('recreate', [container]), plan)
|
||||
containers = web.execute_convergence_plan(plan)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue