about summary refs log tree commit diff
path: root/deploy
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-01-31T16·29+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-01-31T16·29+0000
commit4e0b18506fd2d30af0006d2f3525a9d6d7b45424 (patch)
treef2a99cdb17a61890920b414f7d91065d6b6ebe7e /deploy
parent265d2029088a1f49c5716bcb3d96f71dd0845d7e (diff)
Rename docker -> deploy
I think the name deploy is more representative of the purpose of this directory
since docker is just one of a few tools that I'm using to deploy software.
Diffstat (limited to 'deploy')
-rw-r--r--deploy/README.md58
-rw-r--r--deploy/cloud_run.nix18
-rw-r--r--deploy/config.lisp21
3 files changed, 97 insertions, 0 deletions
diff --git a/deploy/README.md b/deploy/README.md
new file mode 100644
index 000000000000..026dcc9c05c9
--- /dev/null
+++ b/deploy/README.md
@@ -0,0 +1,58 @@
+# Deployments
+
+I'm documenting how I currently deploy things.
+
+I'd like to automate this workflow as much as possible, and I intend to do just
+that. For now, I'm running things manually until I can design an generalization
+that appeals to me.
+
+## Dependencies
+- `nix-build`
+- `docker`
+- `gcloud`
+
+## Step-by-step
+
+1. Use `nix-build` to create our Docker image for Cloud Run.
+
+```shell
+> nix-build ./cloud_run.nix
+```
+
+This outputs a Docker image at `./result`.
+
+1. Load the built image (i.e. `./result`) into `docker` so that we can tag it
+   and push it to the Google Container Registry (i.e. GCR).
+
+```shell
+> sudo docker load <./result
+```
+
+1. (Optionally) Run the image locally to verify its integrity.
+
+```shell
+> sudo docker run -d -p 8080:4242 <name>:<tag>
+```
+
+1. Tag and push the image to GCR.
+
+```shell
+> sudo docker tag <name>:<label> gcr.io/<google-cloud-project-id>/<name>:<latest>
+```
+
+# TODO: Prefer using a command line tool like `gcloud` for these steps.
+
+1. Visit Google Cloud Run; create a new service with "Create Service"; select
+   the uploaded Docker image from the "Container Image URL" field; click
+   "Create" to deploy.
+
+## Notes
+
+You may need to authorize `gcloud` by running the following:
+
+```shell
+> sudo gcloud auth login --no-launch-browser
+```
+
+You must use `sudo` here since the `docker` invocations are prefixed with `sudo`
+as well.
diff --git a/deploy/cloud_run.nix b/deploy/cloud_run.nix
new file mode 100644
index 000000000000..70be4040c36b
--- /dev/null
+++ b/deploy/cloud_run.nix
@@ -0,0 +1,18 @@
+{
+  pkgs ? import <nixpkgs> {},
+  depot ? import <depot> {},
+  ...
+}:
+
+pkgs.dockerTools.buildLayeredImage {
+  name = "gemma";
+  tag = "latest";
+  config.ExposedPorts = {
+    "4242" = {};
+  };
+  config.Env = [
+    "GEMMA_CONFIG=${./config.lisp}"
+  ];
+  config.Cmd = [ "${depot.fun.gemma}/bin/gemma" ];
+  maxLayers = 120;
+}
diff --git a/deploy/config.lisp b/deploy/config.lisp
new file mode 100644
index 000000000000..54f8e5f34462
--- /dev/null
+++ b/deploy/config.lisp
@@ -0,0 +1,21 @@
+;; Example configuration file for Gemma
+
+(config :port 4242
+        :data-dir "/tmp/gemma/")
+
+(deftask bathroom/wipe-mirror 7)
+(deftask bathroom/wipe-counter 7)
+
+;; Bedroom tasks
+(deftask bedroom/change-sheets 7)
+(deftask bedroom/vacuum 10)
+
+;; Kitchen tasks
+(deftask kitchen/normal-trash 3)
+(deftask kitchen/green-trash 5)
+(deftask kitchen/blue-trash 5)
+(deftask kitchen/wipe-counters 3)
+(deftask kitchen/vacuum 5 "Kitchen has more crumbs and such!")
+
+;; Entire place
+(deftask clean-windows 60)