Add a `COMPOSE_ENV` file and save its location as a shell variable along with the location where this repo lives, here for example `/opt/containers/hashicorpvault` plus all other variables. At [env/fqdn_context.env.example](env/fqdn_context.env.example) you'll find an example environment file.
When everything's ready start Vault with Docker Compose, otherwise head down to [Initial setup](#initial-setup) first.
On your deployment machine create the necessary Docker context to connect to and control the Docker daemon on whatever target host you'll be using, for example:
_FIXME_ We build the `vault` image locally. Our adjustment to the official image is simply adding `/tmp/vault` to it. See [build-context/vault/Dockerfile](build-context/vault/Dockerfile). We use `/tmp/vault` to bind-mount a dedicated ZFS dataset for the application's `tmpdir` location.
_FIXME_ Rewrite either [Build](#build) or this paragraph for which images are built and which ones pulled, `--profile 'full'` may not make sense _FIXME_ Pull images from Docker Hub verbatim.
We're assuming you run Docker Compose workloads with ZFS-based bind mounts. ZFS management, creating a zpool and setting adequate properties for its datasets is out of scope of this document.
## Datasets
Create ZFS datasets and set permissions as needed.
_FIXME_ delete when all is done _FIXME_ When changing bind mount locations to real ones remember to also update `volumes:` in [docker-compose.yml](docker-compose.yml).