module DockerContainerClean

takeltau docker container clean

Public Instance Methods

docker_container_clean() click to toggle source

Backend method for docker container clean.

# File lib/takeltau/docker/container/clean.rb, line 6
def docker_container_clean
  log.debug 'Removing all docker containers'

  return false unless docker_check_daemon

  return false if _docker_container_clean_harakiri?

  mutagen_socket_terminate "--label-selector='#{@takellabel}'"
  networks = _docker_container_clean_kill_existing_containers
  _docker_container_lib_remove_networks networks
end

Private Instance Methods

_docker_container_clean_harakiri?() click to toggle source

Check if we are running tau clean inside a takelage container.

# File lib/takeltau/docker/container/clean.rb, line 21
def _docker_container_clean_harakiri?
  hostname = ENV['HOSTNAME'] || ''
  return false unless hostname.start_with? "#{@docker_repo}_"

  log.error "Please run \"tau clean\" outside of #{@docker_repo} containers"
  log.info "Run \"tau prune\" to remove orphaned #{@docker_repo} containers"
  true
end
_docker_container_clean_kill_existing_containers() click to toggle source

Kill all docker containers and return list of networks.

# File lib/takeltau/docker/container/clean.rb, line 31
def _docker_container_clean_kill_existing_containers
  networks = []
  _docker_container_lib_get_containers.each do |container|
    name = _docker_container_lib_get_container_name_by_id container
    _docker_container_lib_stop_container container
    networks << name unless networks.include? name
  end
  networks
end