Source code for ebonite.ext.docker.builder

from ebonite.build.builder.base import BuilderBase
from ebonite.build.helpers import validate_kwargs
from ebonite.core.objects.core import Buildable
from ebonite.ext.docker.build_context import DockerBuildArgs, DockerBuildContext

from .base import DockerEnv, DockerImage


[docs]class DockerBuilder(BuilderBase): """Builder implementation to build docker images"""
[docs] @validate_kwargs def create_image(self, name: str, environment: DockerEnv, tag: str = 'latest', repository: str = None, **kwargs) -> DockerImage: return DockerImage(name, tag, repository, environment.registry)
[docs] @validate_kwargs(allowed_funcs=[DockerBuildArgs.__init__]) def build_image(self, buildable: Buildable, image: DockerImage, environment: DockerEnv, force_overwrite=False, **kwargs): context = DockerBuildContext(buildable.get_provider(), image, force_overwrite=force_overwrite, **kwargs) docker_image = context.build(environment) image.image_id = docker_image.id
[docs] @validate_kwargs def delete_image(self, image: DockerImage, environment: DockerEnv, force=False, **kwargs): with environment.daemon.client() as client: image.delete(client, force, **kwargs)
[docs] @validate_kwargs def image_exists(self, image: DockerImage, environment: DockerEnv, **kwargs) -> bool: with environment.daemon.client() as client: return image.exists(client)