diff --git a/ai/compose.yaml b/ai/compose.yaml index 367ea69..e957f8a 100644 --- a/ai/compose.yaml +++ b/ai/compose.yaml @@ -13,6 +13,7 @@ services: POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256 volumes: - ai_postgres_data:/var/lib/postgresql/data + - ./postgres/init:/docker-entrypoint-initdb.d healthcheck: test: ["CMD-SHELL", "pg_isready -U ${AI_DB_USER}"] interval: 30s diff --git a/ai/postgres/init/01-init-databases.sh b/ai/postgres/init/01-init-databases.sh new file mode 100755 index 0000000..69e7094 --- /dev/null +++ b/ai/postgres/init/01-init-databases.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -e + +# PostgreSQL initialization script for AI stack +# This script runs on first database initialization +# Creates all databases required by AI services + +echo "Starting AI stack database initialization..." + +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + -- Create databases for AI services + -- Open WebUI database + SELECT 'CREATE DATABASE openwebui' + WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'openwebui')\gexec + + -- LiteLLM proxy database + SELECT 'CREATE DATABASE litellm' + WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'litellm')\gexec + + -- Grant privileges to all databases + GRANT ALL PRIVILEGES ON DATABASE openwebui TO $POSTGRES_USER; + GRANT ALL PRIVILEGES ON DATABASE litellm TO $POSTGRES_USER; + + -- Log success + SELECT 'AI stack databases initialized:' AS status; + SELECT datname FROM pg_database + WHERE datname IN ('openwebui', 'litellm') + ORDER BY datname; +EOSQL + +echo "" +echo "✓ PostgreSQL initialization completed" +echo "✓ All AI stack databases created successfully" +echo "" +echo "Databases available:" +echo " • openwebui - Open WebUI application database" +echo " • litellm - LiteLLM proxy database" +echo ""