#+TITLE: Database setup


This directory contains necessities for initializing and running a database
locally inside a docker container.

We want our development environment to use the same tech stack that production
uses. So rather than support a development configuration that uses SQLite and a
production configuration that uses PostgreSQL, just use PostgreSQL for both.
With Docker, it's easy.


Building requires the following environment variables.

- `POSTGRES_DB`
- `POSTGRES_USER`
- `POSTGRES_PASSWORD`

Running requires the following environment variables.

- `PGDATA`
- `POSTGRES_USER`
- `POSTGRES_PASSWORD`


#+BEGIN_SRC sh
docker build -t darklimericks-db .
#+END_SRC

#+BEGIN_SRC sh :tangle run.sh :tangle-mode (identity #o755)
#!/usr/bin/env sh
set -euo pipefail

PGDATA=${PGDATA:-"$(pwd)/data/dev"}
POSTGRES_USER=${POSTGRES_USER:-"dev"}
POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-"dev"}

docker run \
    --name db \
    -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD \
    -e POSTGRES_USER=$POSTGRES_USER \
    -v $PGDATA:/var/lib/postgresql/data \
    -p 5432:5432 \
    darklimericks-db
#+END_SRC

#+BEGIN_SRC sh
docker start db
#+END_SRC
