Document current deployment tactics

Adding a README including my current method for deploying. See the README for
more details. All of this is quite virgin and as such is subject to change.
This commit is contained in:
William Carroll 2020-01-28 16:48:28 +00:00
parent ff06ffcf9c
commit 8ad51b24dd

59
docker/README.md Normal file
View file

@ -0,0 +1,59 @@
# 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 <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.