humainflow-service/run_service.sh

45 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
if [[ -f local.env ]]; then
set -a
source local.env
set +a
fi
POSTGRES_CONTAINER="${POSTGRES_CONTAINER:-humainflow-postgres}"
POSTGRES_IMAGE="${POSTGRES_IMAGE:-postgres:17-alpine}"
POSTGRES_DB="${POSTGRES_DB:-mydb}"
POSTGRES_USER="${POSTGRES_USER:-${DB_USER:-lucio}}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-${DB_PASSWORD:-password}}"
if docker container inspect "$POSTGRES_CONTAINER" >/dev/null 2>&1; then
docker rm -f "$POSTGRES_CONTAINER" >/dev/null
fi
docker run \
--name "$POSTGRES_CONTAINER" \
--rm \
-e POSTGRES_DB="$POSTGRES_DB" \
-e POSTGRES_USER="$POSTGRES_USER" \
-e POSTGRES_PASSWORD="$POSTGRES_PASSWORD" \
-p 5432:5432 \
-d "$POSTGRES_IMAGE" >/dev/null
cleanup() {
docker stop "$POSTGRES_CONTAINER" >/dev/null 2>&1 || true
}
trap cleanup EXIT INT TERM
until docker exec "$POSTGRES_CONTAINER" pg_isready -U "$POSTGRES_USER" -d "$POSTGRES_DB" >/dev/null 2>&1; do
sleep 1
done
# Il database è usa-e-getta: crea lo schema direttamente dalle entity.
./mvnw spring-boot:run \
-Dspring-boot.run.jvmArguments="-Dddl-auto=create-drop"