When build true call docker-compose build, and add nocache option.
This commit is contained in:
parent
df09b4f668
commit
cd7b34547d
1 changed files with 51 additions and 8 deletions
|
@ -108,13 +108,14 @@ options:
|
||||||
default: smart
|
default: smart
|
||||||
build:
|
build:
|
||||||
description:
|
description:
|
||||||
- Whether or not to build images before starting containers.
|
- Use with state I(present) to always build images prior to starting the application.
|
||||||
- Missing images will always be built.
|
- Same as running docker-compose build with the pull option.
|
||||||
- If an image is present and C(build) is false, the image will not be built.
|
- Images will only be rebuilt if Docker detects a change in the Dockerfile or build directory contents.
|
||||||
- If an image is present and C(build) is true, the image will be built.
|
- Use the C(nocache) option to ignore the image cache when performing the build.
|
||||||
|
- If an existing image is replaced, services using the image will be recreated unless C(recreate) is I(never).
|
||||||
type: bool
|
type: bool
|
||||||
required: false
|
required: false
|
||||||
default: true
|
default: false
|
||||||
pull:
|
pull:
|
||||||
description:
|
description:
|
||||||
- Use with state I(present) to always pull images prior to starting the application.
|
- Use with state I(present) to always pull images prior to starting the application.
|
||||||
|
@ -124,6 +125,13 @@ options:
|
||||||
required: false
|
required: false
|
||||||
default: false
|
default: false
|
||||||
version_added: "2.2"
|
version_added: "2.2"
|
||||||
|
nocache:
|
||||||
|
description:
|
||||||
|
- Use with the build option to ignore the cache during the image build process.
|
||||||
|
type: bool
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
version_added: "2.2"
|
||||||
remove_images:
|
remove_images:
|
||||||
description:
|
description:
|
||||||
- Use with state I(absent) to remove the all images or only local images.
|
- Use with state I(absent) to remove the all images or only local images.
|
||||||
|
@ -475,6 +483,7 @@ class ContainerManager(DockerBaseClass):
|
||||||
self.scale = None
|
self.scale = None
|
||||||
self.debug = None
|
self.debug = None
|
||||||
self.pull = None
|
self.pull = None
|
||||||
|
self.nocache = None
|
||||||
|
|
||||||
for key, value in client.module.params.items():
|
for key, value in client.module.params.items():
|
||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
|
@ -569,7 +578,7 @@ class ContainerManager(DockerBaseClass):
|
||||||
|
|
||||||
up_options = {
|
up_options = {
|
||||||
u'--no-recreate': False,
|
u'--no-recreate': False,
|
||||||
u'--build': self.build,
|
u'--build': True,
|
||||||
u'--no-build': False,
|
u'--no-build': False,
|
||||||
u'--no-deps': False,
|
u'--no-deps': False,
|
||||||
u'--force-recreate': False,
|
u'--force-recreate': False,
|
||||||
|
@ -589,6 +598,9 @@ class ContainerManager(DockerBaseClass):
|
||||||
if self.pull:
|
if self.pull:
|
||||||
result.update(self.cmd_pull())
|
result.update(self.cmd_pull())
|
||||||
|
|
||||||
|
if self.build:
|
||||||
|
result.update(self.cmd_build())
|
||||||
|
|
||||||
for service in self.project.services:
|
for service in self.project.services:
|
||||||
if not service_names or service.name in service_names:
|
if not service_names or service.name in service_names:
|
||||||
plan = service.convergence_plan(strategy=converge)
|
plan = service.convergence_plan(strategy=converge)
|
||||||
|
@ -607,11 +619,13 @@ class ContainerManager(DockerBaseClass):
|
||||||
|
|
||||||
if not self.check_mode and result['changed']:
|
if not self.check_mode and result['changed']:
|
||||||
try:
|
try:
|
||||||
|
do_build = build_action_from_opts(up_options)
|
||||||
|
self.log('Setting do_build to %s' % do_build)
|
||||||
self.project.up(
|
self.project.up(
|
||||||
service_names=service_names,
|
service_names=service_names,
|
||||||
start_deps=start_deps,
|
start_deps=start_deps,
|
||||||
strategy=converge,
|
strategy=converge,
|
||||||
do_build=build_action_from_opts(up_options),
|
do_build=do_build,
|
||||||
detached=detached,
|
detached=detached,
|
||||||
remove_orphans=self.remove_orphans)
|
remove_orphans=self.remove_orphans)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
@ -717,6 +731,34 @@ class ContainerManager(DockerBaseClass):
|
||||||
)
|
)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def cmd_build(self):
|
||||||
|
result = dict(
|
||||||
|
changed=False,
|
||||||
|
actions=dict(),
|
||||||
|
)
|
||||||
|
if not self.check_mode:
|
||||||
|
for service in self.project.get_services(self.services, include_deps=False):
|
||||||
|
self.log('Building image for service %s' % service.name)
|
||||||
|
if service.can_be_built():
|
||||||
|
# store the existing image ID
|
||||||
|
image = service.image()
|
||||||
|
old_image_id = None
|
||||||
|
if image and image.get('Id'):
|
||||||
|
old_image_id = image['Id']
|
||||||
|
|
||||||
|
# build the image
|
||||||
|
new_image_id = service.build(pull=True, no_cache=self.nocache)
|
||||||
|
|
||||||
|
if new_image_id not in old_image_id:
|
||||||
|
# if a new image was built
|
||||||
|
result['changed'] = True
|
||||||
|
result['actions'][service.name] = dict()
|
||||||
|
result['actions'][service.name]['built_image'] = dict(
|
||||||
|
name=service.image_name,
|
||||||
|
id=service.image()['Id']
|
||||||
|
)
|
||||||
|
return result
|
||||||
|
|
||||||
def cmd_down(self):
|
def cmd_down(self):
|
||||||
result = dict(
|
result = dict(
|
||||||
changed=False,
|
changed=False,
|
||||||
|
@ -824,7 +866,7 @@ def main():
|
||||||
definition=dict(type='dict'),
|
definition=dict(type='dict'),
|
||||||
hostname_check=dict(type='bool', default=False),
|
hostname_check=dict(type='bool', default=False),
|
||||||
recreate=dict(type='str', choices=['always','never','smart'], default='smart'),
|
recreate=dict(type='str', choices=['always','never','smart'], default='smart'),
|
||||||
build=dict(type='bool', default=True),
|
build=dict(type='bool', default=False),
|
||||||
remove_images=dict(type='str', choices=['all', 'local']),
|
remove_images=dict(type='str', choices=['all', 'local']),
|
||||||
remove_volumes=dict(type='bool', default=False),
|
remove_volumes=dict(type='bool', default=False),
|
||||||
remove_orphans=dict(type='bool', default=False),
|
remove_orphans=dict(type='bool', default=False),
|
||||||
|
@ -834,6 +876,7 @@ def main():
|
||||||
services=dict(type='list'),
|
services=dict(type='list'),
|
||||||
dependencies=dict(type='bool', default=True),
|
dependencies=dict(type='bool', default=True),
|
||||||
pull=dict(type='bool', default=False),
|
pull=dict(type='bool', default=False),
|
||||||
|
nocache=dict(type='bool', default=False),
|
||||||
debug=dict(type='bool', default=False)
|
debug=dict(type='bool', default=False)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue