Best Python code snippet using localstack_python
docker_cmd_client.py
Source:docker_cmd_client.py
...386 return True387 except (subprocess.CalledProcessError, FileNotFoundError):388 return False389 def create_container(self, image_name: str, **kwargs) -> str:390 cmd, env_file = self._build_run_create_cmd("create", image_name, **kwargs)391 LOG.debug("Create container with cmd: %s", cmd)392 try:393 container_id = run(cmd)394 # Note: strip off Docker warning messages like "DNS setting (--dns=127.0.0.1) may fail in containers"395 container_id = container_id.strip().split("\n")[-1]396 return container_id.strip()397 except subprocess.CalledProcessError as e:398 if "Unable to find image" in to_str(e.stdout):399 raise NoSuchImage(image_name, stdout=e.stdout, stderr=e.stderr)400 raise ContainerException(401 "Docker process returned with errorcode %s" % e.returncode, e.stdout, e.stderr402 )403 finally:404 Util.rm_env_vars_file(env_file)405 def run_container(self, image_name: str, stdin=None, **kwargs) -> Tuple[bytes, bytes]:406 cmd, env_file = self._build_run_create_cmd("run", image_name, **kwargs)407 LOG.debug("Run container with cmd: %s", cmd)408 result = self._run_async_cmd(cmd, stdin, kwargs.get("name") or "", image_name)409 Util.rm_env_vars_file(env_file)410 return result411 def exec_in_container(412 self,413 container_name_or_id: str,414 command: Union[List[str], str],415 interactive=False,416 detach=False,417 env_vars: Optional[Dict[str, Optional[str]]] = None,418 stdin: Optional[bytes] = None,419 user: Optional[str] = None,420 workdir: Optional[str] = None,421 ) -> Tuple[bytes, bytes]:422 env_file = None423 cmd = self._docker_cmd()424 cmd.append("exec")425 if interactive:426 cmd.append("--interactive")427 if detach:428 cmd.append("--detach")429 if user:430 cmd += ["--user", user]431 if workdir:432 cmd += ["--workdir", workdir]433 if env_vars:434 env_flag, env_file = Util.create_env_vars_file_flag(env_vars)435 cmd += env_flag436 cmd.append(container_name_or_id)437 cmd += command if isinstance(command, List) else [command]438 LOG.debug("Execute in container cmd: %s", cmd)439 result = self._run_async_cmd(cmd, stdin, container_name_or_id)440 Util.rm_env_vars_file(env_file)441 return result442 def start_container(443 self,444 container_name_or_id: str,445 stdin=None,446 interactive: bool = False,447 attach: bool = False,448 flags: Optional[str] = None,449 ) -> Tuple[bytes, bytes]:450 cmd = self._docker_cmd() + ["start"]451 if flags:452 cmd.append(flags)453 if interactive:454 cmd.append("--interactive")455 if attach:456 cmd.append("--attach")457 cmd.append(container_name_or_id)458 LOG.debug("Start container with cmd: %s", cmd)459 return self._run_async_cmd(cmd, stdin, container_name_or_id)460 def _run_async_cmd(461 self, cmd: List[str], stdin: bytes, container_name: str, image_name=None462 ) -> Tuple[bytes, bytes]:463 kwargs = {464 "inherit_env": True,465 "asynchronous": True,466 "stderr": subprocess.PIPE,467 "outfile": self.default_run_outfile or subprocess.PIPE,468 }469 if stdin:470 kwargs["stdin"] = True471 try:472 process = run(cmd, **kwargs)473 stdout, stderr = process.communicate(input=stdin)474 if process.returncode != 0:475 raise subprocess.CalledProcessError(476 process.returncode,477 cmd,478 stdout,479 stderr,480 )481 else:482 return stdout, stderr483 except subprocess.CalledProcessError as e:484 stderr_str = to_str(e.stderr)485 if "Unable to find image" in stderr_str:486 raise NoSuchImage(image_name or "", stdout=e.stdout, stderr=e.stderr)487 if "No such container" in stderr_str:488 raise NoSuchContainer(container_name, stdout=e.stdout, stderr=e.stderr)489 raise ContainerException(490 "Docker process returned with errorcode %s" % e.returncode, e.stdout, e.stderr491 )492 def _build_run_create_cmd(493 self,494 action: str,495 image_name: str,496 *,497 name: Optional[str] = None,498 entrypoint: Optional[str] = None,499 remove: bool = False,500 interactive: bool = False,501 tty: bool = False,502 detach: bool = False,503 command: Optional[Union[List[str], str]] = None,504 mount_volumes: Optional[List[SimpleVolumeBind]] = None,505 ports: Optional[PortMappings] = None,506 env_vars: Optional[Dict[str, str]] = None,...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!