# Postgresql

A database for all those awesome services you'll be running.

## Install / Update / Run Script

Setup a generic script that'll auto update, build a container and launch it. You should only run this script at first launch and/or when you're looking for updates.

If you are running your operating system from a Micro SD Card, You may wish to store your data directory on a [USB drive](../hardware/usb-flash-drive.md) to reduce the number of writes to the SD card. If you do so, don't forget to change the volume mount path when starting the docker container. 

``` bash

# Create directory for postgres to store data. 
# Alternatively, create a directory on a USB drive
mkdir -p /var/postgres/data

cat > /scratch/docker/postgres.sh << EOF
#!/bin/bash

VERSION=""

ARCH=\`arch\`

# Cleanup arch/container image here.
if [ \$ARCH == "aarch64" ]
then
    echo "64bit arm"
    VERSION="arm64v8/postgres:latest"
else
    echo "32bit arm"
    VERSION="arm32v7/postgres:latest"
fi

docker pull \$VERSION

# Cleanup existing container.
docker stop postgres
docker rm postgres

# Re-run/create container with latest image.
# Don't forget to change the volume mount path 
# if you changed it above. 
#
# Please change user and password below to something
# approrpriate to your installation.
docker run \\
    --name postgres \\
    --restart unless-stopped \\
    --net docker-private \\
    --ip 172.30.12.12 \\
    -e TZ=UTC \\
    -e DEBUG=1 \\
    -e POSTGRES_USER=mypostgres
    -e POSTGRES_PASSWORD=test1234 \\
    -v /var/postgres/data:/var/lib/postgresql/data \\
    \$VERSION
EOF

chmod a+x /scratch/docker/postgres.sh

```

## Run Postgres

Simply execute ```/scratch/docker/postgres.sh``` to update/run Postgres.
