about summary refs log tree commit diff
path: root/nix_gcr/README.md
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-04-05T14·40+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-04-05T14·40+0100
commit8562bf5b5aaf4212fde5afabb122e8133a27464a (patch)
tree77c3fd2cc5a4d142e339d4c6cddc5c51ca58349e /nix_gcr/README.md
parenta500171fd804809262553fc9d637b394439090a7 (diff)
Rename //deploy -> //nix_gcr
I create //deploy when I first deployed a few applications that I
packaged with Nix. This was before I setup socrates as my "cloud". Now I
deploy all of my services using NixOS. The name "deploy" is a bit stale.
I'm renaming it //nix_gcr because it documents how I can deploy
Nix-packaged projects on Google Cloud Run.
Diffstat (limited to 'nix_gcr/README.md')
-rw-r--r--nix_gcr/README.md62
1 files changed, 62 insertions, 0 deletions
diff --git a/nix_gcr/README.md b/nix_gcr/README.md
new file mode 100644
index 000000000000..9d111cf6bba5
--- /dev/null
+++ b/nix_gcr/README.md
@@ -0,0 +1,62 @@
+# Nix + Google Cloud Run (i.e. GCR)
+
+I'm documenting how I currently deploy projects that I package with Nix on
+Google Cloud Run.
+
+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>
+```
+
+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.
+
+## Todos
+
+- If possible, prefer using a command line tool like `gcloud` to create the
+  Cloud Run service.