#!/bin/bash set -e APP_DB_NAME=${APP_DB_NAME:-condado} APP_DB_USER=${SPRING_DATASOURCE_USERNAME:-condado} APP_DB_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-condado} # ── Initialise PostgreSQL data directory on first run ───────────────────────── if [ ! -f /var/lib/postgresql/data/PG_VERSION ]; then echo "Initialising PostgreSQL data directory..." su -c "/usr/lib/postgresql/16/bin/initdb -D /var/lib/postgresql/data --encoding=UTF8 --locale=C" postgres # Start postgres temporarily to create the app database and user su -c "/usr/lib/postgresql/16/bin/pg_ctl -D /var/lib/postgresql/data -w start" postgres su -c "psql -v ON_ERROR_STOP=1 -c \"CREATE USER ${APP_DB_USER} WITH PASSWORD '${APP_DB_PASSWORD}';\"" postgres su -c "psql -v ON_ERROR_STOP=1 -c \"CREATE DATABASE ${APP_DB_NAME} OWNER ${APP_DB_USER};\"" postgres su -c "/usr/lib/postgresql/16/bin/pg_ctl -D /var/lib/postgresql/data -w stop" postgres echo "PostgreSQL initialised." fi # ── Ensure supervisor log directory exists ──────────────────────────────────── mkdir -p /var/log/supervisor # ── Defaults for all-in-one local PostgreSQL ───────────────────────────────── export SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL:-jdbc:postgresql://localhost:5432/${APP_DB_NAME}} export SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME:-${APP_DB_USER}} export SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-${APP_DB_PASSWORD}} export JWT_EXPIRATION_MS=${JWT_EXPIRATION_MS:-86400000} # ── Log all Spring Boot environment variables for debugging ────────────────── echo "========================================" echo "Spring Boot Configuration:" echo "========================================" echo "SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL}" echo "SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}" echo "SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}" echo "JWT_EXPIRATION_MS=${JWT_EXPIRATION_MS}" echo "JAVA_OPTS=${JAVA_OPTS:-not set}" echo "OPENAI_API_KEY=${OPENAI_API_KEY:-not set}" echo "========================================" # ── Start all services via supervisord ─────────────────────────────────────── # Export unbuffered output for both Python and Java export PYTHONUNBUFFERED=1 export JAVA_OPTS="${JAVA_OPTS} -Dfile.encoding=UTF-8 -Djava.awt.headless=true" exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf