Add script for running test with Postgres
This commit is contained in:
parent
4dd23d561e
commit
f55e7fd06f
39
with-db.sh
Executable file
39
with-db.sh
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# * Run a postgres server at localhost:${DB_PORT}
|
||||||
|
# * Wait for it to be up and running
|
||||||
|
# * Run the passed arguments as a command
|
||||||
|
# * Kill the postgres server
|
||||||
|
#
|
||||||
|
# Example usage: ./with-db.sh cabal test
|
||||||
|
#
|
||||||
|
# The application running in this context can use
|
||||||
|
# the DB_* variables to connect to postgres.
|
||||||
|
export DB_USER=opium
|
||||||
|
export DB_PASS=opium
|
||||||
|
export DB_NAME=opium
|
||||||
|
export DB_PORT=5442
|
||||||
|
|
||||||
|
# On error or exit: Kill the postgres container
|
||||||
|
function kill_db_container {
|
||||||
|
docker kill "${CONTAINER_ID}" > /dev/null
|
||||||
|
}
|
||||||
|
trap kill_db_container EXIT
|
||||||
|
|
||||||
|
CONTAINER_ID=$(docker run --rm \
|
||||||
|
-e "POSTGRES_USER=${DB_USER}" \
|
||||||
|
-e "POSTGRES_PASSWORD=${DB_PASS}" \
|
||||||
|
-e "POSTGRES_DB=${DB_NAME}" \
|
||||||
|
-p "127.0.0.1:${DB_PORT}:5432" \
|
||||||
|
--health-cmd pg_isready \
|
||||||
|
--health-interval 0.25s \
|
||||||
|
--detach \
|
||||||
|
postgres:14-alpine)
|
||||||
|
|
||||||
|
# Setting --health-cmd above allows us to wait for postgres to be up
|
||||||
|
until [[ "$(docker inspect -f "{{.State.Health.Status}}" "${CONTAINER_ID}" || true)" = healthy ]]
|
||||||
|
do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
"$@"
|
Loading…
x
Reference in New Issue
Block a user