From 1dab9c1fb5b3dd9d39d85bc620f894a22962b2bc Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 8 Jan 2023 16:50:06 +0100 Subject: [PATCH] More documentation --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/README.md b/README.md index 252eb8ca..99079b78 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,56 @@ This will: Voila! All the servers are now serving the app on port 80. If you're just running a single server, you're ready to go. If you're running multiple servers, you need to put a load balancer in front of them. +## Operations + +### Inspecting + +You can see the state of your servers by running `rake mrsk:info`. It'll show something like this: + +``` +Traefik Host: xxx.xxx.xxx.xxx +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +6195b2a28c81 traefik "/entrypoint.sh --pr…" 30 minutes ago Up 19 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp traefik + +Traefik Host: 164.92.105.119 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +de14a335d152 traefik "/entrypoint.sh --pr…" 30 minutes ago Up 19 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp traefik + +App Host: 164.90.145.60 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +badb1aa51db3 registry.digitalocean.com/user/app:6ef8a6a84c525b123c5245345a8483f86d05a123 "/rails/bin/docker-e…" 13 minutes ago Up 13 minutes 3000/tcp chat-6ef8a6a84c525b123c5245345a8483f86d05a123 + +App Host: 164.92.105.119 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +1d3c91ed1f55 registry.digitalocean.com/user/app:6ef8a6a84c525b123c5245345a8483f86d05a123 "/rails/bin/docker-e…" 13 minutes ago Up 13 minutes 3000/tcp chat-6ef8a6a84c525b123c5245345a8483f86d05a123 +``` + +You can also see just info for app containers with `rake mrsk:app:info` or just for Traefik with `rake mrsk:traefik:info`. + +### Rollback + +If you've discovered a bad deploy, you can quickly rollback by reactivating the old, paused container image. You can see what old containers are available for rollback by running `rake mrsk:app:containers`. It'll give you a presentation similar to `rake mrsk:app:info`, but include all the old containers as well. Showing something like this: + +``` +App Host: 164.92.105.119 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +1d3c91ed1f51 registry.digitalocean.com/user/app:6ef8a6a84c525b123c5245345a8483f86d05a123 "/rails/bin/docker-e…" 19 minutes ago Up 19 minutes 3000/tcp chat-6ef8a6a84c525b123c5245345a8483f86d05a123 +539f26b28369 registry.digitalocean.com/user/app:e5d9d7c2b898289dfbc5f7f1334140d984eedae4 "/rails/bin/docker-e…" 31 minutes ago Exited (1) 27 minutes ago chat-e5d9d7c2b898289dfbc5f7f1334140d984eedae4 + +App Host: 164.90.145.60 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +badb1aa51db4 registry.digitalocean.com/user/app:6ef8a6a84c525b123c5245345a8483f86d05a123 "/rails/bin/docker-e…" 19 minutes ago Up 19 minutes 3000/tcp chat-6ef8a6a84c525b123c5245345a8483f86d05a123 +6f170d1172ae registry.digitalocean.com/user/app:e5d9d7c2b898289dfbc5f7f1334140d984eedae4 "/rails/bin/docker-e…" 31 minutes ago Exited (1) 27 minutes ago chat-e5d9d7c2b898289dfbc5f7f1334140d984eedae4 +``` + +From the example above, we can see that `e5d9d7c2b898289dfbc5f7f1334140d984eedae4` was the last version, so it's available as a rollback target. We can perform this rollback by running `rake mrsk:rollback VERSION=e5d9d7c2b898289dfbc5f7f1334140d984eedae4`. That'll stop `6ef8a6a84c525b123c5245345a8483f86d05a123` and then start `e5d9d7c2b898289dfbc5f7f1334140d984eedae4`. Because the old container is still available, this is very quick. Nothing to download from the registry. + +Note that by default old containers are pruned after 3 days when you run `rake mrsk:deploy`. + +### Removing + +... + ## Stage of development This is alpha software. Lots of stuff is missing. Here are some of the areas we seek to improve: