takelage 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.md +213 -0
- data/bin/tau +6 -0
- data/lib/Thorfile +3 -0
- data/lib/takelage.rb +230 -0
- data/lib/takelage/bit/check/cli.rb +23 -0
- data/lib/takelage/bit/check/workspace.rb +37 -0
- data/lib/takelage/bit/cli.rb +15 -0
- data/lib/takelage/bit/clipboard/cli.rb +73 -0
- data/lib/takelage/bit/clipboard/copy.rb +140 -0
- data/lib/takelage/bit/clipboard/lib.rb +132 -0
- data/lib/takelage/bit/clipboard/paste.rb +57 -0
- data/lib/takelage/bit/clipboard/pull.rb +37 -0
- data/lib/takelage/bit/clipboard/push.rb +37 -0
- data/lib/takelage/bit/scope/add.rb +55 -0
- data/lib/takelage/bit/scope/cli.rb +74 -0
- data/lib/takelage/bit/scope/inbit.rb +13 -0
- data/lib/takelage/bit/scope/list.rb +41 -0
- data/lib/takelage/bit/scope/new.rb +44 -0
- data/lib/takelage/completion/cli.rb +24 -0
- data/lib/takelage/default.yml +68 -0
- data/lib/takelage/docker/check/cli.rb +23 -0
- data/lib/takelage/docker/check/running.rb +23 -0
- data/lib/takelage/docker/cli.rb +18 -0
- data/lib/takelage/docker/container/check/cli.rb +57 -0
- data/lib/takelage/docker/container/check/existing.rb +31 -0
- data/lib/takelage/docker/container/check/network.rb +31 -0
- data/lib/takelage/docker/container/check/orphaned.rb +31 -0
- data/lib/takelage/docker/container/clean.rb +39 -0
- data/lib/takelage/docker/container/cli.rb +114 -0
- data/lib/takelage/docker/container/command.rb +33 -0
- data/lib/takelage/docker/container/daemon.rb +13 -0
- data/lib/takelage/docker/container/lib.rb +160 -0
- data/lib/takelage/docker/container/login.rb +46 -0
- data/lib/takelage/docker/container/prune.rb +30 -0
- data/lib/takelage/docker/image/check/cli.rb +39 -0
- data/lib/takelage/docker/image/check/outdated.rb +40 -0
- data/lib/takelage/docker/image/cli.rb +44 -0
- data/lib/takelage/docker/image/tag/check/cli.rb +48 -0
- data/lib/takelage/docker/image/tag/check/local.rb +42 -0
- data/lib/takelage/docker/image/tag/check/remote.rb +38 -0
- data/lib/takelage/docker/image/tag/cli.rb +15 -0
- data/lib/takelage/docker/image/tag/latest/cli.rb +57 -0
- data/lib/takelage/docker/image/tag/latest/local.rb +20 -0
- data/lib/takelage/docker/image/tag/latest/remote.rb +25 -0
- data/lib/takelage/docker/image/tag/list/cli.rb +53 -0
- data/lib/takelage/docker/image/tag/list/local.rb +19 -0
- data/lib/takelage/docker/image/tag/list/remote.rb +28 -0
- data/lib/takelage/docker/image/update.rb +33 -0
- data/lib/takelage/docker/socket/cli.rb +75 -0
- data/lib/takelage/docker/socket/host.rb +25 -0
- data/lib/takelage/docker/socket/lib.rb +88 -0
- data/lib/takelage/docker/socket/scheme.rb +63 -0
- data/lib/takelage/docker/socket/start.rb +34 -0
- data/lib/takelage/docker/socket/stop.rb +55 -0
- data/lib/takelage/git/check/clean.rb +46 -0
- data/lib/takelage/git/check/cli.rb +49 -0
- data/lib/takelage/git/check/master.rb +26 -0
- data/lib/takelage/git/check/workspace.rb +33 -0
- data/lib/takelage/git/cli.rb +9 -0
- data/lib/takelage/info/cli.rb +9 -0
- data/lib/takelage/info/project/cli.rb +56 -0
- data/lib/takelage/lib/config.rb +114 -0
- data/lib/takelage/lib/logging.rb +47 -0
- data/lib/takelage/lib/project.rb +69 -0
- data/lib/takelage/lib/subcmd.rb +16 -0
- data/lib/takelage/lib/system.rb +104 -0
- data/lib/takelage/self/cli.rb +43 -0
- data/lib/takelage/self/config/cli.rb +82 -0
- data/lib/takelage/self/list.rb +30 -0
- data/lib/takelage/version +1 -0
- metadata +298 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Takelage
|
4
|
+
# takelage docker
|
5
|
+
class Docker < SubCommandBase
|
6
|
+
desc 'check [COMMAND]', 'Check docker'
|
7
|
+
subcommand 'check', DockerCheck
|
8
|
+
|
9
|
+
desc 'container [COMMAND]', 'Handle docker container'
|
10
|
+
subcommand 'container', DockerContainer
|
11
|
+
|
12
|
+
desc 'image [COMMAND]', 'Handle docker images'
|
13
|
+
subcommand 'image', DockerImage
|
14
|
+
|
15
|
+
desc 'socket [COMMAND]', 'Handle sockets for docker containers'
|
16
|
+
subcommand 'socket', DockerSocket
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Takelage
|
4
|
+
# takelage docker container check
|
5
|
+
class DockerContainerCheck < SubCommandBase
|
6
|
+
include LoggingModule
|
7
|
+
include SystemModule
|
8
|
+
include ConfigModule
|
9
|
+
include DockerCheckRunning
|
10
|
+
include DockerContainerCheckExisting
|
11
|
+
include DockerContainerCheckNetwork
|
12
|
+
include DockerContainerCheckOrphaned
|
13
|
+
|
14
|
+
#
|
15
|
+
# docker container check existing
|
16
|
+
#
|
17
|
+
desc 'existing [CONTAINER]', 'Check if docker [CONTAINER] is existing'
|
18
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
19
|
+
Check if docker container is existing
|
20
|
+
This check looks for a container with a given name.
|
21
|
+
If such a container is existing the result is true else false.
|
22
|
+
LONGDESC
|
23
|
+
# Check if docker container is existing.
|
24
|
+
def existing(container)
|
25
|
+
exit docker_container_check_existing container
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# docker container check network
|
30
|
+
#
|
31
|
+
desc 'network [NETWORK]', 'Check if docker [NETWORK] is existing'
|
32
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
33
|
+
Check if docker network is existing
|
34
|
+
This check looks for a network with a given name.
|
35
|
+
If such a network is existing the result is true else false.
|
36
|
+
LONGDESC
|
37
|
+
# Check if docker network is existing.
|
38
|
+
def network(network)
|
39
|
+
exit docker_container_check_network network
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
# docker container check orphaned
|
44
|
+
#
|
45
|
+
desc 'orphaned [CONTAINER]', 'Check if docker [CONTAINER] is orphaned'
|
46
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
47
|
+
Check if docker container is orphaned
|
48
|
+
This check looks for a process which is started
|
49
|
+
when you log in to an takelage docker container.
|
50
|
+
If such a process is found the result is true else false.
|
51
|
+
LONGDESC
|
52
|
+
# Check if docker container is orphaned.
|
53
|
+
def orphaned(container)
|
54
|
+
exit docker_container_check_orphaned container
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container check existing
|
4
|
+
module DockerContainerCheckExisting
|
5
|
+
# Backend method for docker container check existing.
|
6
|
+
# @return [Boolean] is container existing?
|
7
|
+
def docker_container_check_existing(container)
|
8
|
+
log.debug "Checking if container \"#{container}\" is existing"
|
9
|
+
|
10
|
+
return false unless docker_check_running
|
11
|
+
|
12
|
+
stdout_str = run _docker_container_cmd_check_existing container
|
13
|
+
|
14
|
+
if stdout_str.to_s.strip.empty?
|
15
|
+
log.debug "Container \"#{container}\" is not existing"
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
log.debug "Container \"#{container}\" is existing"
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def _docker_container_cmd_check_existing(container)
|
26
|
+
format(
|
27
|
+
config.active['cmd_docker_container_check_existing_docker_ps'],
|
28
|
+
container: container
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container check network
|
4
|
+
module DockerContainerCheckNetwork
|
5
|
+
# Backend method for docker container check network.
|
6
|
+
# @return [Boolean] is network existing?
|
7
|
+
def docker_container_check_network(network)
|
8
|
+
log.debug "Checking if network \"#{network}\" is existing"
|
9
|
+
|
10
|
+
return false unless docker_check_running
|
11
|
+
|
12
|
+
stdout_str = run _docker_container_cmd_check_network network
|
13
|
+
|
14
|
+
if stdout_str.to_s.strip.empty?
|
15
|
+
log.debug "Network \"#{network}\" is not existing"
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
log.debug "Network \"#{network}\" is existing"
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def _docker_container_cmd_check_network(network)
|
26
|
+
format(
|
27
|
+
config.active['cmd_docker_container_check_network_docker_network'],
|
28
|
+
network: network
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container check orphaned
|
4
|
+
module DockerContainerCheckOrphaned
|
5
|
+
# Backend method for docker container check orphaned.
|
6
|
+
# @return [Boolean] is container orphaned?
|
7
|
+
def docker_container_check_orphaned(container)
|
8
|
+
log.debug "Check if container \"#{container}\" is orphaned"
|
9
|
+
|
10
|
+
return false unless docker_check_running
|
11
|
+
|
12
|
+
stdout_str = run _docker_container_cmd_check_orphaned container
|
13
|
+
|
14
|
+
if stdout_str.include? '/loginpoint.py'
|
15
|
+
log.debug "Container \"#{container}\" isn't orphaned"
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
log.debug "Container \"#{container}\" is orphaned"
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def _docker_container_cmd_check_orphaned(container)
|
26
|
+
format(
|
27
|
+
config.active['cmd_docker_container_check_orphaned_docker_exec'],
|
28
|
+
container: container
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container clean
|
4
|
+
module DockerContainerClean
|
5
|
+
# Backend method for docker container clean.
|
6
|
+
def docker_container_clean
|
7
|
+
log.debug 'Removing all docker containers'
|
8
|
+
|
9
|
+
return false unless docker_check_running
|
10
|
+
|
11
|
+
return false if _docker_container_clean_harakiri?
|
12
|
+
|
13
|
+
networks = _docker_container_clean_kill_existing_containers
|
14
|
+
_docker_container_lib_remove_networks networks
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# Check if we are running tau clean inside a takelage container
|
20
|
+
def _docker_container_clean_harakiri?
|
21
|
+
hostname = ENV['HOSTNAME'] || ''
|
22
|
+
return false unless hostname.start_with? "#{@docker_repo}_"
|
23
|
+
|
24
|
+
log.error "Please run \"tau clean\" outside of #{@docker_repo} containers"
|
25
|
+
log.info "Run \"tau prune\" to remove orphaned #{@docker_repo} containers"
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
# Kill all docker containers and return list of networks
|
30
|
+
def _docker_container_clean_kill_existing_containers
|
31
|
+
networks = []
|
32
|
+
_docker_container_lib_get_containers.each do |container|
|
33
|
+
name = _docker_container_lib_get_container_name_by_id container
|
34
|
+
_docker_container_lib_stop_container container
|
35
|
+
networks << name unless networks.include? name
|
36
|
+
end
|
37
|
+
networks
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Takelage
|
4
|
+
# takelage docker container
|
5
|
+
class DockerContainer < SubCommandBase
|
6
|
+
include LoggingModule
|
7
|
+
include SystemModule
|
8
|
+
include ConfigModule
|
9
|
+
include DockerCheckRunning
|
10
|
+
include DockerContainerCheckExisting
|
11
|
+
include DockerContainerCheckNetwork
|
12
|
+
include DockerContainerCheckOrphaned
|
13
|
+
include DockerContainerLib
|
14
|
+
include DockerContainerCommand
|
15
|
+
include DockerContainerDaemon
|
16
|
+
include DockerContainerLogin
|
17
|
+
include DockerContainerClean
|
18
|
+
include DockerContainerPrune
|
19
|
+
include DockerImageTagLatestLocal
|
20
|
+
include DockerImageTagListLocal
|
21
|
+
include DockerImageTagCheckLocal
|
22
|
+
include DockerImageCheckOutdated
|
23
|
+
include DockerSocketLib
|
24
|
+
include DockerSocketHost
|
25
|
+
include DockerSocketScheme
|
26
|
+
include DockerSocketStart
|
27
|
+
|
28
|
+
# Initialize docker container
|
29
|
+
# rubocop:disable Metrics/AbcSize
|
30
|
+
def initialize(args = [], local_options = {}, configuration = {})
|
31
|
+
# initialize thor parent class
|
32
|
+
super args, local_options, configuration
|
33
|
+
|
34
|
+
@docker_user = config.active['docker_user']
|
35
|
+
@docker_repo = config.active['docker_repo']
|
36
|
+
@docker_tag = config.active['docker_tag']
|
37
|
+
@docker_registry = config.active['docker_registry']
|
38
|
+
@username = ENV['USER'] || 'noname'
|
39
|
+
@workdir = Dir.getwd
|
40
|
+
@hostname = "#{@docker_repo}_#{File.basename(@workdir)}"
|
41
|
+
@socket_host = docker_socket_host
|
42
|
+
@sockets = docker_socket_scheme
|
43
|
+
end
|
44
|
+
# rubocop:enable Metrics/AbcSize
|
45
|
+
|
46
|
+
desc 'check [COMMAND]', 'Check docker container'
|
47
|
+
subcommand 'check', DockerContainerCheck
|
48
|
+
|
49
|
+
#
|
50
|
+
# docker container clean
|
51
|
+
#
|
52
|
+
desc 'clean', 'Remove all docker containers'
|
53
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
54
|
+
Remove all docker containers
|
55
|
+
LONGDESC
|
56
|
+
# Remove all docker containers.
|
57
|
+
def clean
|
58
|
+
docker_container_clean
|
59
|
+
end
|
60
|
+
|
61
|
+
#
|
62
|
+
# docker container command
|
63
|
+
#
|
64
|
+
desc 'command [CMD]', 'Run [CMD] in a docker container'
|
65
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
66
|
+
Run command in docker container
|
67
|
+
LONGDESC
|
68
|
+
# Run command in docker container.
|
69
|
+
def command(command)
|
70
|
+
docker_container_command(command)
|
71
|
+
end
|
72
|
+
|
73
|
+
#
|
74
|
+
# docker container daemon
|
75
|
+
#
|
76
|
+
desc 'daemon', 'Run docker container in daemon mode'
|
77
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
78
|
+
Run docker container in daemon mode
|
79
|
+
LONGDESC
|
80
|
+
# Run docker container in daemon mode.
|
81
|
+
def daemon
|
82
|
+
docker_container_daemon
|
83
|
+
end
|
84
|
+
|
85
|
+
#
|
86
|
+
# docker container login
|
87
|
+
#
|
88
|
+
option :debug,
|
89
|
+
aliases: 'd',
|
90
|
+
type: :boolean,
|
91
|
+
default: false,
|
92
|
+
desc: 'Log in to docker container in debug mode'
|
93
|
+
desc 'login', 'Log in to latest local docker container'
|
94
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
95
|
+
Log in to latest local docker container
|
96
|
+
LONGDESC
|
97
|
+
# Log in to latest local docker container.
|
98
|
+
def login
|
99
|
+
docker_container_login
|
100
|
+
end
|
101
|
+
|
102
|
+
#
|
103
|
+
# docker container prune
|
104
|
+
#
|
105
|
+
desc 'prune', 'Remove orphaned docker containers'
|
106
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
107
|
+
Remove orphaned docker containers
|
108
|
+
LONGDESC
|
109
|
+
# Remove orphaned docker containers.
|
110
|
+
def prune
|
111
|
+
docker_container_prune
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container command
|
4
|
+
module DockerContainerCommand
|
5
|
+
# Backend method for docker container command.
|
6
|
+
def docker_container_command(command)
|
7
|
+
log.debug 'Running command in container'
|
8
|
+
|
9
|
+
return false unless docker_check_running
|
10
|
+
|
11
|
+
docker_socket_start
|
12
|
+
return false unless _docker_container_lib_create_net_and_ctr @hostname
|
13
|
+
|
14
|
+
_docker_container_command_run_command @hostname, command
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# Prepare run command in container command.
|
20
|
+
def _docker_container_command_run_command(container, command)
|
21
|
+
log.debug "Running command \"#{command}\" in container \"#{container}\""
|
22
|
+
|
23
|
+
cmd_docker_run_command =
|
24
|
+
format(
|
25
|
+
config.active['cmd_docker_container_docker_exec'],
|
26
|
+
container: container,
|
27
|
+
username: @username,
|
28
|
+
command: command
|
29
|
+
)
|
30
|
+
|
31
|
+
run_and_exit cmd_docker_run_command
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container daemon
|
4
|
+
module DockerContainerDaemon
|
5
|
+
# Backend method for docker container daemon.
|
6
|
+
def docker_container_daemon
|
7
|
+
log.debug 'Starting docker container as daemon'
|
8
|
+
|
9
|
+
return false unless docker_check_running
|
10
|
+
|
11
|
+
_docker_container_lib_create_net_and_ctr @hostname
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container lib
|
4
|
+
# rubocop:disable Metrics/ModuleLength
|
5
|
+
module DockerContainerLib
|
6
|
+
private
|
7
|
+
|
8
|
+
# Create docker container and network.
|
9
|
+
# rubocop:disable Style/IfUnlessModifier
|
10
|
+
def _docker_container_lib_create_net_and_ctr(name)
|
11
|
+
unless docker_container_check_network name
|
12
|
+
_docker_container_lib_create_network name
|
13
|
+
end
|
14
|
+
|
15
|
+
return true if docker_container_check_existing name
|
16
|
+
|
17
|
+
_docker_container_lib_create_container name
|
18
|
+
end
|
19
|
+
# rubocop:enable Style/IfUnlessModifier
|
20
|
+
|
21
|
+
# Remove docker networks.
|
22
|
+
# rubocop:disable Style/IfUnlessModifier
|
23
|
+
def _docker_container_lib_remove_networks(networks)
|
24
|
+
networks.each do |network|
|
25
|
+
if docker_container_check_network network
|
26
|
+
_docker_container_lib_remove_network network
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
# rubocop:enable Style/IfUnlessModifier
|
31
|
+
|
32
|
+
# Create docker network.
|
33
|
+
def _docker_container_lib_create_network(network)
|
34
|
+
log.debug "Create network \"#{network}\""
|
35
|
+
|
36
|
+
cmd_create_network = format(
|
37
|
+
config.active['cmd_docker_container_create_network'],
|
38
|
+
network: network
|
39
|
+
)
|
40
|
+
|
41
|
+
run cmd_create_network
|
42
|
+
end
|
43
|
+
|
44
|
+
# Remove docker network.
|
45
|
+
def _docker_container_lib_remove_network(network)
|
46
|
+
log.debug "Remove network \"#{network}\""
|
47
|
+
|
48
|
+
cmd_remove_network = format(
|
49
|
+
config.active['cmd_docker_container_remove_network'],
|
50
|
+
network: network
|
51
|
+
)
|
52
|
+
|
53
|
+
run cmd_remove_network
|
54
|
+
end
|
55
|
+
|
56
|
+
# Create docker container.
|
57
|
+
# rubocop:disable Metrics/MethodLength
|
58
|
+
# rubocop:disable Metrics/AbcSize
|
59
|
+
# rubocop:disable Style/IfUnlessModifier
|
60
|
+
def _docker_container_lib_create_container(container)
|
61
|
+
log.debug "Creating container \"#{container}\""
|
62
|
+
|
63
|
+
image = "#{@docker_user}/#{@docker_repo}:#{@docker_tag}"
|
64
|
+
|
65
|
+
return false unless _docker_container_lib_image_available? image
|
66
|
+
|
67
|
+
log.debug "Using docker image \"#{image}\""
|
68
|
+
|
69
|
+
unless @socket_host == '127.0.0.1'
|
70
|
+
addhost = "--add-host host.docker.internal:#{@socket_host}"
|
71
|
+
end
|
72
|
+
|
73
|
+
docker_debug = config.active['docker_debug']
|
74
|
+
entrypoint = '/entrypoint.py '
|
75
|
+
volume_dev = ''
|
76
|
+
if options[:debug]
|
77
|
+
entrypoint = '/debug/entrypoint.py --debug '
|
78
|
+
volume_dev = "--volume #{@workdir}/#{docker_debug}:/debug "
|
79
|
+
end
|
80
|
+
|
81
|
+
cmd_docker_create = format(
|
82
|
+
config.active['cmd_docker_container_create'],
|
83
|
+
addhost: addhost,
|
84
|
+
container: container,
|
85
|
+
docker_run_options: config.active['docker_run_options'],
|
86
|
+
docker_daemon_port: config.active['docker_socket_docker_daemon_port'],
|
87
|
+
entrypoint: entrypoint,
|
88
|
+
entrypoint_options: config.active['docker_entrypoint_options'],
|
89
|
+
extra: config.active['docker_entrypoint_extra'],
|
90
|
+
gid: Etc.getpwnam(@username).gid,
|
91
|
+
gpg_agent_port: config.active['docker_socket_gpg_agent_port'],
|
92
|
+
gpg_ssh_agent_port: config.active['docker_socket_gpg_ssh_agent_port'],
|
93
|
+
homedir: ENV['HOME'] || '/tmp',
|
94
|
+
image: image,
|
95
|
+
shmsize: config.active['docker_shm_size'],
|
96
|
+
timezone: 'Europe/Berlin',
|
97
|
+
uid: Etc.getpwnam(@username).uid,
|
98
|
+
username: @username,
|
99
|
+
volume_dev: volume_dev,
|
100
|
+
workdir: @workdir
|
101
|
+
)
|
102
|
+
|
103
|
+
try cmd_docker_create
|
104
|
+
end
|
105
|
+
# rubocop:enable Style/IfUnlessModifier
|
106
|
+
# rubocop:enable Metrics/AbcSize
|
107
|
+
# rubocop:enable Metrics/MethodLength
|
108
|
+
|
109
|
+
# Check if docker image is available
|
110
|
+
def _docker_container_lib_image_available?(image)
|
111
|
+
return true if docker_image_tag_list_local.include? @docker_tag
|
112
|
+
|
113
|
+
log.error "No local image \"#{image}\" available"
|
114
|
+
log.info "Try: docker pull #{image}"
|
115
|
+
false
|
116
|
+
end
|
117
|
+
|
118
|
+
# Get container name by id.
|
119
|
+
def _docker_container_lib_get_container_name_by_id(container)
|
120
|
+
log.debug "Getting name of container \"#{container}\""
|
121
|
+
|
122
|
+
cmd_get_container_name_by_id = format(
|
123
|
+
config.active['cmd_docker_container_get_container_name'],
|
124
|
+
container: container
|
125
|
+
)
|
126
|
+
|
127
|
+
name = (run cmd_get_container_name_by_id).chomp
|
128
|
+
|
129
|
+
log.debug "Container #{container} has name \"#{name}\""
|
130
|
+
|
131
|
+
name
|
132
|
+
end
|
133
|
+
|
134
|
+
# Get all docker containers.
|
135
|
+
# @return [Array] list of docker containers
|
136
|
+
def _docker_container_lib_get_containers
|
137
|
+
log.debug "Getting all containers of image \"#{@docker_repo}\""
|
138
|
+
|
139
|
+
cmd_docker_get = format(
|
140
|
+
config.active['cmd_docker_container_get_containers'],
|
141
|
+
docker_repo: @docker_repo
|
142
|
+
)
|
143
|
+
|
144
|
+
# convert stdout lines to array and return array
|
145
|
+
(run cmd_docker_get).split(/\n+/)
|
146
|
+
end
|
147
|
+
|
148
|
+
# Stop container.
|
149
|
+
def _docker_container_lib_stop_container(container)
|
150
|
+
log.debug "Stopping container \"#{container}\""
|
151
|
+
|
152
|
+
cmd_docker_stop = format(
|
153
|
+
config.active['cmd_docker_container_stop_container'],
|
154
|
+
container: container
|
155
|
+
)
|
156
|
+
|
157
|
+
run cmd_docker_stop
|
158
|
+
end
|
159
|
+
end
|
160
|
+
# rubocop:enable Metrics/ModuleLength
|