# frozen_string_literal: true # tau ship container lib module ShipContainerLib private # Run nonprivileged docker command def _ship_container_lib_docker_nonprivileged(command) return false unless docker_check_daemon cmd_docker_run_command = format( config.active['cmd_ship_project_start_docker_run_nonprivileged'], image: _ship_container_lib_image, command: command ) run cmd_docker_run_command end # Run privileged docker command # rubocop:disable Metrics/AbcSize # rubocop:disable Metrics/MethodLength def _ship_container_lib_docker_privileged(ports, command) return false unless docker_check_daemon ship_data_dir = config.active['ship_data_dir'] ship_env = config.active['ship_env'] ports = _ship_container_lib_publish(ports) ports = config.active['ports'] unless config.active['ship_ports'].empty? cmd_docker_run_command = format( config.active['cmd_ship_project_start_docker_run_privileged'], ship_hostname: _ship_container_lib_ship_hostname, ship_env: ship_env, ports: ports, ship_data_dir: ship_data_dir, image: _ship_container_lib_image, command: command ) run cmd_docker_run_command end # rubocop:enable Metrics/MethodLength # rubocop:enable Metrics/AbcSize # Run a podman command in a takelship container # rubocop:disable Metrics/MethodLength # rubocop:disable Metrics/AbcSize def _ship_container_lib_podman(command) return false unless docker_check_daemon docker_host = _ship_info_lib_get_takelshipinfo['docker_host'] config_docker_host = config.active['ship_docker_host'] docker_host = config_docker_host if config_docker_host != config.active['ship_default_docker_host'] localhost = config.active['ship_podman_localhost'] cmd_docker_run_command = format( config.active['cmd_ship_container_podman'], docker_host: docker_host, localhost: localhost, command: command ) run cmd_docker_run_command end # rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/MethodLength # Run a docker command in a takelship container def _ship_container_lib_docker(command, tty = '') return false unless docker_check_daemon cmd_docker_run_command = format( config.active['cmd_ship_container_docker'], ship_hostname: _ship_container_lib_ship_hostname, tty: tty, command: command ) run_and_exit cmd_docker_run_command end # Run takelship docker stop command def _ship_container_lib_docker_stop return false unless docker_check_daemon return false unless ship_container_check_existing cmd_docker_stop_command = format( config.active['cmd_ship_project_start_docker_stop'], ship_hostname: _ship_container_lib_ship_hostname ) run cmd_docker_stop_command end # Return takelship image def _ship_container_lib_image ship_user = config.active['ship_user'] ship_repo = config.active['ship_repo'] ship_tag = config.active['ship_tag'] "#{ship_user}/#{ship_repo}:#{ship_tag}" end # Create unique docker hostname def _ship_container_lib_ship_hostname ship_name = config.active['ship_name'] workdir = Dir.getwd unique_name = "#{ship_name}_#{workdir}" digest = Digest::SHA256.bubblebabble unique_name unique = digest[0..10] format( config.active['ship_hostname'], ship_name: ship_name, unique: unique ) end # Create publish ports string def _ship_container_lib_publish(ports) publish = [] ports.each do |port| publish << "--publish \"127.0.0.1:#{port}:#{port}\"" end publish.join(' ') end end