Files
2026-04-22 09:45:29 +02:00

53 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
sqlcmd_bin="/opt/mssql-tools18/bin/sqlcmd"
server_ready=false
db_exists=""
run_sqlcmd_query() {
"$sqlcmd_bin" -S localhost -U sa -P "${MSSQL_SA_PASSWORD}" -C "$@"
}
for _ in $(seq 1 60); do
if run_sqlcmd_query -Q "SELECT 1" >/dev/null 2>&1; then
server_ready=true
break
fi
sleep 2
done
if [ "$server_ready" != "true" ]; then
echo "SQL Server did not become ready in time." >&2
exit 1
fi
for _ in $(seq 1 30); do
if db_exists="$(run_sqlcmd_query -h -1 -W -Q "SET NOCOUNT ON; SELECT CASE WHEN DB_ID(N'${MSSQL_DB}') IS NULL THEN 0 ELSE 1 END;" 2>/dev/null)"; then
db_exists="$(echo "$db_exists" | tr -d '[:space:]')"
break
fi
sleep 2
done
if [ -z "$db_exists" ]; then
echo "Could not determine whether database ${MSSQL_DB} exists." >&2
exit 1
fi
if [ "$db_exists" = "1" ]; then
echo "Database ${MSSQL_DB} already exists. Skipping initialization."
exit 0
fi
for sql_file in /docker-entrypoint-initdb.d/*.sql; do
echo "Running ${sql_file}"
run_sqlcmd_query \
-b \
-f 65001 \
-i "${sql_file}" \
-v MSSQL_DB="${MSSQL_DB}" APP_DB_USER="${APP_DB_USER}" APP_DB_PASSWORD="${APP_DB_PASSWORD}" MSSQL_COLLATION="${MSSQL_COLLATION}"
done