module DockerContainerLib
takelage docker container lib rubocop:disable Metrics/ModuleLength rubocop:disable Style/IfUnlessModifier
Private Instance Methods
_docker_container_lib_check_matrjoschka()
click to toggle source
Check if we are already inside a takelage container
# File lib/takelage/docker/container/lib.rb, line 116 def _docker_container_lib_check_matrjoschka log.debug 'Checking if we are already inside a takelage container' unless ENV.keys.include? 'TAKELAGE_PROJECT_BASE_DIR' log.debug 'We are not inside a takelage container' return false end log.debug 'We are inside a takelage container' true end
_docker_container_lib_create_container(container)
click to toggle source
Create docker container. rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize
# File lib/takelage/docker/container/lib.rb, line 73 def _docker_container_lib_create_container(container) log.debug "Creating container \"#{container}\"" image = "#{@docker_user}/#{@docker_repo}:#{@docker_tag}" return false unless _docker_container_lib_image_available? image log.debug "Using docker image \"#{image}\"" docker_debug = config.active['docker_debug'] entrypoint = '/entrypoint.py ' volume_dev = '' if options[:debug] entrypoint = '/debug/entrypoint.py --debug ' volume_dev = "--volume #{@workdir}/#{docker_debug}:/debug " end cmd_docker_create = format( config.active['cmd_docker_container_create'], container: container, docker_run_options: config.active['docker_run_options'], dockersock: '/var/run/docker.sock', entrypoint: entrypoint, entrypoint_options: config.active['docker_entrypoint_options'], extra: config.active['docker_entrypoint_extra'], gid: Etc.getpwnam(@username).gid, homedir: ENV['HOME'] || '/tmp', image: image, shmsize: config.active['docker_shm_size'], timezone: 'Europe/Berlin', uid: Etc.getpwnam(@username).uid, username: @username, volume_dev: volume_dev, workdir: @workdir ) try cmd_docker_create end
_docker_container_lib_create_net_and_ctr(name)
click to toggle source
Create docker container and network.
# File lib/takelage/docker/container/lib.rb, line 27 def _docker_container_lib_create_net_and_ctr(name) return true if docker_container_check_existing name unless docker_container_check_network name _docker_container_lib_create_network name end _docker_container_lib_create_container name end
_docker_container_lib_create_network(network)
click to toggle source
Create docker network.
# File lib/takelage/docker/container/lib.rb, line 47 def _docker_container_lib_create_network(network) log.debug "Create network \"#{network}\"" cmd_create_network = format( config.active['cmd_docker_container_create_network'], network: network ) run cmd_create_network end
_docker_container_lib_get_container_name_by_id(container)
click to toggle source
Get container name by id.
# File lib/takelage/docker/container/lib.rb, line 139 def _docker_container_lib_get_container_name_by_id(container) log.debug "Getting name of container \"#{container}\"" cmd_get_container_name_by_id = format( config.active['cmd_docker_container_get_container_name'], container: container ) name = (run cmd_get_container_name_by_id).chomp log.debug "Container #{container} has name \"#{name}\"" name end
_docker_container_lib_get_containers()
click to toggle source
Get all docker containers. @return [Array] list of docker containers
# File lib/takelage/docker/container/lib.rb, line 156 def _docker_container_lib_get_containers log.debug "Getting all containers of image \"#{@docker_repo}\"" cmd_docker_get = format( config.active['cmd_docker_container_get_containers'], docker_repo: @docker_repo ) # convert stdout lines to array and return array (run cmd_docker_get).split(/\n+/) end
_docker_container_lib_hostname()
click to toggle source
Create unique docker hostname
# File lib/takelage/docker/container/lib.rb, line 19 def _docker_container_lib_hostname relative_name = "#{@docker_repo}_#{File.basename(@workdir)}" absolute_name = "#{@docker_repo}_#{@workdir}" digest = Digest::SHA256.bubblebabble absolute_name "#{relative_name}_#{digest[0..10]}" end
_docker_container_lib_image_available?(image)
click to toggle source
Check if docker image is available
# File lib/takelage/docker/container/lib.rb, line 130 def _docker_container_lib_image_available?(image) return true if docker_image_tag_list.include? @docker_tag log.error "No local image \"#{image}\" available" log.info "Try: docker pull #{image}" false end
_docker_container_lib_remove_network(network)
click to toggle source
Remove docker network.
# File lib/takelage/docker/container/lib.rb, line 59 def _docker_container_lib_remove_network(network) log.debug "Remove network \"#{network}\"" cmd_remove_network = format( config.active['cmd_docker_container_remove_network'], network: network ) run cmd_remove_network end
_docker_container_lib_remove_networks(networks)
click to toggle source
Remove docker networks.
# File lib/takelage/docker/container/lib.rb, line 38 def _docker_container_lib_remove_networks(networks) networks.each do |network| if docker_container_check_network network _docker_container_lib_remove_network network end end end
_docker_container_lib_start_sockets()
click to toggle source
Create mutagen sockets
# File lib/takelage/docker/container/lib.rb, line 10 def _docker_container_lib_start_sockets return false unless mutagen_check_daemon mutagen_socket_create 'mutagen', @mutagensock, @mutagensock mutagen_socket_create 'gpg', @gpgsock, @gpgsock mutagen_socket_create 'ssh', @sshsock, @sshsock end
_docker_container_lib_stop_container(container)
click to toggle source
Stop container.
# File lib/takelage/docker/container/lib.rb, line 169 def _docker_container_lib_stop_container(container) log.debug "Stopping container \"#{container}\"" cmd_docker_stop = format( config.active['cmd_docker_container_stop_container'], container: container ) run cmd_docker_stop end