From ffb532a50d09e4caea37262b9558b245066430f2 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 8 Jan 2023 14:55:06 +0100 Subject: [PATCH] Add remove tasks to clean up --- lib/mrsk/commands/app.rb | 13 +++++++++++++ lib/mrsk/commands/traefik.rb | 8 ++++++++ lib/tasks/mrsk/app.rake | 8 ++++++++ lib/tasks/mrsk/mrsk.rake | 3 +++ lib/tasks/mrsk/traefik.rake | 8 ++++++++ 5 files changed, 40 insertions(+) diff --git a/lib/mrsk/commands/app.rb b/lib/mrsk/commands/app.rb index 6b4c4de0..7b8652b2 100644 --- a/lib/mrsk/commands/app.rb +++ b/lib/mrsk/commands/app.rb @@ -24,4 +24,17 @@ class Mrsk::Commands::App < Mrsk::Commands::Base def info "docker ps --filter label=service=#{config.service}" end + + def remove_containers + "docker container prune -f #{service_filter}" + end + + def remove_images + "docker image prune -a -f #{service_filter}" + end + + private + def service_filter + "--filter label=service=#{config.service}" + end end diff --git a/lib/mrsk/commands/traefik.rb b/lib/mrsk/commands/traefik.rb index b264727a..045e6aef 100644 --- a/lib/mrsk/commands/traefik.rb +++ b/lib/mrsk/commands/traefik.rb @@ -18,4 +18,12 @@ class Mrsk::Commands::Traefik < Mrsk::Commands::Base def info "docker ps --filter name=traefik" end + + def remove_container + "docker container prune -f --filter label=org.opencontainers.image.title=Traefik" + end + + def remove_image + "docker image prune -a -f --filter label=org.opencontainers.image.title=Traefik" + end end diff --git a/lib/tasks/mrsk/app.rake b/lib/tasks/mrsk/app.rake index 21acabf6..1f5e2a74 100644 --- a/lib/tasks/mrsk/app.rake +++ b/lib/tasks/mrsk/app.rake @@ -39,5 +39,13 @@ namespace :mrsk do task :info do on(MRSK_CONFIG.servers) { |host| puts "Host: #{host}\n" + capture(app.info) + "\n\n" } end + + desc "Remove app containers and images from servers" + task remove: %i[ stop ] do + on(MRSK_CONFIG.servers) do + execute app.remove_containers + execute app.remove_images + end + end end end diff --git a/lib/tasks/mrsk/mrsk.rake b/lib/tasks/mrsk/mrsk.rake index f8359b01..e6834a11 100644 --- a/lib/tasks/mrsk/mrsk.rake +++ b/lib/tasks/mrsk/mrsk.rake @@ -20,4 +20,7 @@ namespace :mrsk do Pathname.new(File.expand_path("templates/deploy.yml", __dir__)), Rails.root.join("config/deploy.yml") end + + desc "Remove Traefik, app, and registry session from servers" + task remove: %w[ traefik:remove app:remove registry:logout ] end diff --git a/lib/tasks/mrsk/traefik.rake b/lib/tasks/mrsk/traefik.rake index 918ddf91..2bbb78b5 100644 --- a/lib/tasks/mrsk/traefik.rake +++ b/lib/tasks/mrsk/traefik.rake @@ -21,5 +21,13 @@ namespace :mrsk do task :info do on(MRSK_CONFIG.servers) { |host| puts "Host: #{host}\n" + capture(traefik.info) + "\n\n" } end + + desc "Remove Traefik container and image from servers" + task remove: %i[ stop ] do + on(MRSK_CONFIG.servers) do + execute traefik.remove_container + execute traefik.remove_image + end + end end end