Method: Kamal::Cli::App#stale_containers

Defined in:
lib/kamal/cli/app.rb

#stale_containersObject



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/kamal/cli/app.rb', line 181

def stale_containers
  stop = options[:stop]

  with_lock_if_stopping do
    on(KAMAL.app_hosts) do |host|
      roles = KAMAL.roles_on(host)

      roles.each do |role|
        app = KAMAL.app(role: role, host: host)
        versions = capture_with_info(*app.list_versions, raise_on_non_zero_exit: false).split("\n")
        versions -= [ capture_with_info(*app.current_running_version, raise_on_non_zero_exit: false).strip ]

        versions.each do |version|
          if stop
            puts_by_host host, "Stopping stale container for role #{role} with version #{version}"
            execute *app.stop(version: version), raise_on_non_zero_exit: false
          else
            puts_by_host host,  "Detected stale container for role #{role} with version #{version} (use `kamal app stale_containers --stop` to stop)"
          end
        end
      end
    end
  end
end