def up(self): if self.can_be_upped(): for service in self.services: docker.pull_image(project_name=self.project_name, service_name=service.service_name) docker.execute_compose_command(self.project_name, ["up", "--detach"])
def scale(self, scale: int): docker.pull_image(project_name=self.project_name, service_name=self.service_name) docker.execute_compose_command( self.project_name, [ "up", "--detach", "--no-deps", "--scale", f"{self.service_name}={scale}", "--no-recreate", self.service_name, ], )
def logs(self, lines=100, array=False) -> Union[List[str], str]: log_output = docker.execute_compose_command(self.project_name, [ "logs", "--no-color", "--timestamps", f"--tail={lines}", self.service_name ], debug=False) # make sure we are only dealing with \n log_output = log_output.replace("\r\n", "\n") # remove first line of logs (it's useless) log_output = log_output.split("\n")[1:] new_output = [ recompose_log_line_with_formatted_date(line, "%m-%d %H:%M:%S") for line in log_output ] if array: return new_output else: return "\n".join(new_output)
def restart(self): if self.can_be_restarted(): docker.execute_compose_command(self.project_name, ["restart"])
def rm(self): if self.can_be_removed(): docker.execute_compose_command(self.project_name, ["rm", "--force"])
def down(self): if self.can_be_downed(): docker.execute_compose_command(self.project_name, ["down"])
def run_extra_command(project_name: str): if getattr(settings, "EXTRA_DOCKER_COMPOSE_COMMAND"): docker.execute_compose_command( project_name=project_name, args=settings.EXTRA_DOCKER_COMPOSE_COMMAND)
def start(self): if self.can_be_started(): docker.execute_compose_command(self.project_name, ["start", self.service_name])