Class: Kamal::Commands::Accessory
- Inherits:
-
Base
- Object
- Base
- Kamal::Commands::Accessory
show all
- Defined in:
- lib/kamal/commands/accessory.rb
Constant Summary
Constants inherited
from Base
Base::DOCKER_HEALTH_STATUS_FORMAT
Instance Attribute Summary collapse
Attributes inherited from Base
#config
Instance Method Summary
collapse
Methods inherited from Base
#container_id_for, #make_directory, #make_directory_for, #remove_directory
Constructor Details
#initialize(config, name:) ⇒ Accessory
Returns a new instance of Accessory.
6
7
8
9
|
# File 'lib/kamal/commands/accessory.rb', line 6
def initialize(config, name:)
super(config)
@accessory_config = config.accessory(name)
end
|
Instance Attribute Details
#accessory_config ⇒ Object
Returns the value of attribute accessory_config.
2
3
4
|
# File 'lib/kamal/commands/accessory.rb', line 2
def accessory_config
@accessory_config
end
|
Instance Method Details
#ensure_local_file_present(local_file) ⇒ Object
83
84
85
86
87
|
# File 'lib/kamal/commands/accessory.rb', line 83
def ensure_local_file_present(local_file)
if !local_file.is_a?(StringIO) && !Pathname.new(local_file).exist?
raise "Missing file: #{local_file}"
end
end
|
#execute_in_existing_container(*command, interactive: false) ⇒ Object
53
54
55
56
57
58
|
# File 'lib/kamal/commands/accessory.rb', line 53
def execute_in_existing_container(*command, interactive: false)
docker :exec,
("-it" if interactive),
service_name,
*command
end
|
#execute_in_existing_container_over_ssh(*command) ⇒ Object
70
71
72
|
# File 'lib/kamal/commands/accessory.rb', line 70
def execute_in_existing_container_over_ssh(*command)
run_over_ssh execute_in_existing_container(*command, interactive: true)
end
|
#execute_in_new_container(*command, interactive: false) ⇒ Object
60
61
62
63
64
65
66
67
68
|
# File 'lib/kamal/commands/accessory.rb', line 60
def execute_in_new_container(*command, interactive: false)
docker :run,
("-it" if interactive),
"--rm",
*env_args,
*volume_args,
image,
*command
end
|
#execute_in_new_container_over_ssh(*command) ⇒ Object
74
75
76
|
# File 'lib/kamal/commands/accessory.rb', line 74
def execute_in_new_container_over_ssh(*command)
run_over_ssh execute_in_new_container(*command, interactive: true)
end
|
#follow_logs(grep: nil, grep_options: nil) ⇒ Object
45
46
47
48
49
50
|
# File 'lib/kamal/commands/accessory.rb', line 45
def follow_logs(grep: nil, grep_options: nil)
run_over_ssh \
pipe \
docker(:logs, service_name, "--timestamps", "--tail", "10", "--follow", "2>&1"),
(%(grep "#{grep}"#{" #{grep_options}" if grep_options}) if grep)
end
|
#info ⇒ Object
34
35
36
|
# File 'lib/kamal/commands/accessory.rb', line 34
def info
docker :ps, *service_filter
end
|
#logs(since: nil, lines: nil, grep: nil, grep_options: nil) ⇒ Object
39
40
41
42
43
|
# File 'lib/kamal/commands/accessory.rb', line 39
def logs(since: nil, lines: nil, grep: nil, grep_options: nil)
pipe \
docker(:logs, service_name, (" --since #{since}" if since), (" --tail #{lines}" if lines), "--timestamps", "2>&1"),
("grep '#{grep}'#{" #{grep_options}" if grep_options}" if grep)
end
|
#make_env_directory ⇒ Object
101
102
103
|
# File 'lib/kamal/commands/accessory.rb', line 101
def make_env_directory
make_directory accessory_config.env.secrets_directory
end
|
#remove_container ⇒ Object
93
94
95
|
# File 'lib/kamal/commands/accessory.rb', line 93
def remove_container
docker :container, :prune, "--force", *service_filter
end
|
#remove_env_file ⇒ Object
105
106
107
|
# File 'lib/kamal/commands/accessory.rb', line 105
def remove_env_file
[ :rm, "-f", accessory_config.env.secrets_file ]
end
|
#remove_image ⇒ Object
97
98
99
|
# File 'lib/kamal/commands/accessory.rb', line 97
def remove_image
docker :image, :rm, "--force", image
end
|
#remove_service_directory ⇒ Object
89
90
91
|
# File 'lib/kamal/commands/accessory.rb', line 89
def remove_service_directory
[ :rm, "-rf", service_name ]
end
|
#run ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/kamal/commands/accessory.rb', line 11
def run
docker :run,
"--name", service_name,
"--detach",
"--restart", "unless-stopped",
*config.logging_args,
*publish_args,
*env_args,
*volume_args,
*label_args,
*option_args,
image,
cmd
end
|
#run_over_ssh(command) ⇒ Object
78
79
80
|
# File 'lib/kamal/commands/accessory.rb', line 78
def run_over_ssh(command)
super command, host: hosts.first
end
|
#start ⇒ Object
26
27
28
|
# File 'lib/kamal/commands/accessory.rb', line 26
def start
docker :container, :start, service_name
end
|
#stop ⇒ Object
30
31
32
|
# File 'lib/kamal/commands/accessory.rb', line 30
def stop
docker :container, :stop, service_name
end
|