Files
Ansible-Build/roles/postgres/files/docker-postgres-create
T

56 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
set -e
# Get script name
SCRIPT=$(basename "$0")
# Display Help
Help() {
echo
echo "$SCRIPT"
echo
echo "Description: Create database in Postgres container."
echo "Syntax: $SCRIPT [-c|-d|help]"
echo "Example: $SCRIPT -c postgres01 -d n8n "
echo "options:"
echo " -c Docker container name. Defaults to 'postgres'."
echo " -d Name of database."
echo " help Show $SCRIPT manual."
echo
}
# Show help and exit
if [[ "$1" == "help" ]]; then
Help
exit
fi
# Process params
while getopts ":c: :d: :f:" opt; do
case $opt in
c) CONTAINER="$OPTARG";;
d) DATABASE="$OPTARG";;
\?) echo "Invalid option -$OPTARG" >&2
Help
exit;;
esac
done
# Fallback to environment vars and default values
: ${CONTAINER:='postgres'}
# Verify variables
[[ -z "$DATABASE" ]] && { echo "Parameter -d|database is empty" ; exit 1; }
# Get existing databases
DATABASES=$(docker-postgres-list -c "$CONTAINER")
# Create database if not exists
if [[ "$DATABASES" =~ "$DATABASE" ]]; then
echo "Database $DATABASE already exists."
exit 0
fi
echo "Create Postgres database $DATABASE ..."
docker exec -i $CONTAINER /bin/bash -c "psql postgresql://\$POSTGRES_USER:\$POSTGRES_PASSWORD@\$HOSTNAME/postgres -c \"CREATE DATABASE $DATABASE;\""
echo "Database $DATABASE has been created."