from .domain import DockerBuild from .application import DockerBuildService from .devops_build import DevopsBuild, create_devops_build_config def create_devops_docker_build_config(stage, project_root_path, module, dockerhub_user, dockerhub_password, build_dir_name='target', use_package_common_files=True, build_commons_path=None, docker_build_commons_dir_name='docker', docker_publish_tag=None): ret = create_devops_build_config( stage, project_root_path, module, build_dir_name) ret.update({'dockerhub_user': dockerhub_user, 'dockerhub_password': dockerhub_password, 'use_package_common_files': use_package_common_files, 'docker_build_commons_dir_name': docker_build_commons_dir_name, 'build_commons_path': build_commons_path, 'docker_publish_tag': docker_publish_tag, }) return ret class DevopsDockerBuild(DevopsBuild): def __init__(self, project, config): super().__init__(project, config) self.docker_build = DockerBuild(project, config) self.docker_build_service = DockerBuildService() def initialize_build_dir(self): super().initialize_build_dir() self.docker_build_service.initialize_build_dir(self.docker_build) # TODO: use application from here on def image(self): run('docker build -t ' + self.name() + ' --file ' + self.build_path() + '/image/Dockerfile ' + self.build_path() + '/image', shell=True, check=True) def drun(self): run('docker run --expose 8080 -it --entrypoint="" ' + self.name() + ' /bin/bash', shell=True, check=True) def dockerhub_login(self): run('docker login --username ' + self.dockerhub_user + ' --password ' + self.dockerhub_password, shell=True, check=True) def dockerhub_publish(self): if self.docker_publish_tag is not None: run('docker tag ' + self.name() + ' ' + self.dockerhub_user + '/' + self.name() + ':' + self.docker_publish_tag, shell=True, check=True) run('docker push ' + self.dockerhub_user + '/' + self.name() + ':' + self.docker_publish_tag, shell=True, check=True) run('docker tag ' + self.name() + ' ' + self.dockerhub_user + '/' + self.name() + ':latest', shell=True, check=True) run('docker push ' + self.dockerhub_user + '/' + self.name() + ':latest', shell=True, check=True) def test(self): run('docker build -t ' + self.name() + '-test ' + '--file ' + self.build_path() + '/test/Dockerfile ' + self.build_path() + '/test', shell=True, check=True)