#!/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."