Keep containers around for quick rollback + restarting

Now need to deal with pruning.
This commit is contained in:
David Heinemeier Hansson
2023-01-08 11:45:46 +01:00
parent e8fc046537
commit 73019bedfb
4 changed files with 22 additions and 7 deletions

View File

@@ -8,8 +8,12 @@ class Mrsk::Commands::App < Mrsk::Commands::Base
"docker pull #{config.absolute_image}" "docker pull #{config.absolute_image}"
end end
def run
"docker run -d --restart unless-stopped --name #{config.service_with_version} #{config.envs} #{config.labels} #{config.absolute_image}"
end
def start def start
"docker run -d --rm --name #{config.service_with_version} #{config.envs} #{config.labels} #{config.absolute_image}" "docker start #{config.service_with_version}"
end end
def stop def stop

View File

@@ -1,12 +1,16 @@
class Mrsk::Commands::Traefik < Mrsk::Commands::Base class Mrsk::Commands::Traefik < Mrsk::Commands::Base
def start def run
"docker run --name traefik " + "docker run --name traefik " +
"--rm -d " + "-d --restart unless-stopped " +
"-p 80:80 " + "-p 80:80 " +
"-v /var/run/docker.sock:/var/run/docker.sock " + "-v /var/run/docker.sock:/var/run/docker.sock " +
"traefik --providers.docker" "traefik --providers.docker"
end end
def start
"docker container start traefik"
end
def stop def stop
"docker container stop traefik" "docker container stop traefik"
end end

View File

@@ -17,7 +17,12 @@ namespace :mrsk do
on(MRSK_CONFIG.servers) { execute app.pull } on(MRSK_CONFIG.servers) { execute app.pull }
end end
desc "Start app on servers" desc "Run app on servers"
task :run do
on(MRSK_CONFIG.servers) { execute app.run }
end
desc "Start existing app on servers"
task :start do task :start do
on(MRSK_CONFIG.servers) { execute app.start } on(MRSK_CONFIG.servers) { execute app.start }
end end
@@ -27,7 +32,7 @@ namespace :mrsk do
on(MRSK_CONFIG.servers) { execute app.stop, raise_on_non_zero_exit: false } on(MRSK_CONFIG.servers) { execute app.stop, raise_on_non_zero_exit: false }
end end
desc "Restart app on servers" desc "Start app on servers (use VERSION=<git-hash> to designate which version)"
task restart: %i[ stop start ] task restart: %i[ stop start ]
desc "Display information about app containers" desc "Display information about app containers"

View File

@@ -2,10 +2,12 @@ require_relative "setup"
namespace :mrsk do namespace :mrsk do
desc "Deploy app for the first time to a fresh server" desc "Deploy app for the first time to a fresh server"
task fresh: [ "server:bootstrap", "registry:login", "app:deliver", "traefik:start", "app:start" ] task fresh: [ "server:bootstrap", "registry:login", "app:deliver", "traefik:start", "app:stop", "app:run" ]
desc "Push the latest version of the app, ensure Traefik is running, then restart app" desc "Push the latest version of the app, ensure Traefik is running, then restart app"
task deploy: [ "registry:login", "app:deliver", "traefik:start", "app:restart" ] task deploy: [ "registry:login", "app:deliver", "traefik:start", "app:stop", "app:run" ]
task rollback: [ "app:restart" ]
desc "Display information about Traefik and app containers" desc "Display information about Traefik and app containers"
task info: [ "traefik:info", "app:info" ] task info: [ "traefik:info", "app:info" ]