Adjust setup.sh file to work with inline go statements
This commit is contained in:
parent
50eae904e4
commit
89b19e7f62
@ -12,6 +12,7 @@ services:
|
|||||||
- ACCEPT_EULA=Y
|
- ACCEPT_EULA=Y
|
||||||
- MSSQL_PID=Express
|
- MSSQL_PID=Express
|
||||||
- SA_PASSWORD=YourStrong@Passw0rd
|
- SA_PASSWORD=YourStrong@Passw0rd
|
||||||
|
- DROP_DATABASE=${DROP_DATABASE:-false}
|
||||||
volumes:
|
volumes:
|
||||||
- sqlserver_data:/var/opt/mssql
|
- sqlserver_data:/var/opt/mssql
|
||||||
deploy:
|
deploy:
|
||||||
|
|||||||
@ -5,6 +5,7 @@ FROM mcr.microsoft.com/mssql/server:2022-latest
|
|||||||
ENV ACCEPT_EULA=Y \
|
ENV ACCEPT_EULA=Y \
|
||||||
MSSQL_PID=Express \
|
MSSQL_PID=Express \
|
||||||
SA_PASSWORD=YourStrong@Passw0rd \
|
SA_PASSWORD=YourStrong@Passw0rd \
|
||||||
|
DROP_DATABASE=false \
|
||||||
PATH="/opt/mssql-tools/bin:${PATH}"
|
PATH="/opt/mssql-tools/bin:${PATH}"
|
||||||
|
|
||||||
# Install sqlcmd utility
|
# Install sqlcmd utility
|
||||||
|
|||||||
@ -21,47 +21,87 @@ do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Create st-database if it doesn't exist
|
# Check if we should drop the database
|
||||||
echo "Creating st-database if it doesn't exist..."
|
if [ "${DROP_DATABASE,,}" = "true" ]; then
|
||||||
sqlcmd -S localhost -U sa -P $SA_PASSWORD -Q "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'st-database') CREATE DATABASE [st-database]"
|
echo "DROP_DATABASE is true. Attempting to drop database..."
|
||||||
if [ $? -ne 0 ]; then
|
sqlcmd -S localhost -U sa -P $SA_PASSWORD -Q "
|
||||||
echo "Error creating database"
|
IF EXISTS (SELECT 1 FROM sys.databases WHERE name = 'st-database')
|
||||||
exit 1
|
BEGIN
|
||||||
fi
|
ALTER DATABASE [st-database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
||||||
|
DROP DATABASE [st-database];
|
||||||
# Run the initialization script
|
END"
|
||||||
echo "Running initialization script..."
|
if [ $? -eq 0 ]; then
|
||||||
sqlcmd -S localhost -U sa -P $SA_PASSWORD -d st-database -i /usr/src/app/init.sql
|
echo "Database dropped successfully."
|
||||||
if [ $? -ne 0 ]; then
|
else
|
||||||
echo "Error executing initialization script"
|
echo "Error dropping database"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
|
||||||
|
|
||||||
# Run all schema scripts in the schemas directory
|
|
||||||
echo "Running schema scripts..."
|
|
||||||
for f in /usr/src/app/schemas/*.sql
|
|
||||||
do
|
|
||||||
echo "Processing $f..."
|
|
||||||
|
|
||||||
# Create a temporary file
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
|
|
||||||
# Process the file: add newlines around GO statements
|
|
||||||
sed 's/GO/\nGO\n/g' "$f" > "$temp_file"
|
|
||||||
|
|
||||||
# Execute the processed file
|
|
||||||
sqlcmd -S localhost -U sa -P $SA_PASSWORD -d st-database -i "$temp_file"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Warning: Script $f had some errors but continuing..."
|
|
||||||
rm "$temp_file" # Clean up temp file
|
|
||||||
continue
|
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
# Clean up temp file
|
|
||||||
rm "$temp_file"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "All scripts executed. SQL Server is ready."
|
# Check if database already exists and has tables
|
||||||
|
echo "Checking if database is already initialized..."
|
||||||
|
DB_INITIALIZED=$(sqlcmd -S localhost -U sa -P $SA_PASSWORD -Q "
|
||||||
|
IF EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM sys.databases
|
||||||
|
WHERE name = 'st-database'
|
||||||
|
AND EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM st-database.sys.tables
|
||||||
|
WHERE name = 'AMAssumptionView'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
SELECT 1
|
||||||
|
ELSE
|
||||||
|
SELECT 0" -h -1)
|
||||||
|
|
||||||
|
if [ "$DB_INITIALIZED" = "1" ]; then
|
||||||
|
echo "Database st-database already exists and is initialized. Skipping setup."
|
||||||
|
else
|
||||||
|
echo "Database needs initialization. Starting setup..."
|
||||||
|
|
||||||
|
# Create st-database if it doesn't exist
|
||||||
|
echo "Creating st-database if it doesn't exist..."
|
||||||
|
sqlcmd -S localhost -U sa -P $SA_PASSWORD -Q "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'st-database') CREATE DATABASE [st-database]"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error creating database"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run the initialization script
|
||||||
|
echo "Running initialization script..."
|
||||||
|
sqlcmd -S localhost -U sa -P $SA_PASSWORD -d st-database -i /usr/src/app/init.sql
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error executing initialization script"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run all schema scripts in the schemas directory
|
||||||
|
echo "Running schema scripts..."
|
||||||
|
for f in /usr/src/app/schemas/*.sql
|
||||||
|
do
|
||||||
|
echo "Processing $f..."
|
||||||
|
|
||||||
|
# Create a temporary file
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
|
||||||
|
# Process the file: add newlines around GO statements
|
||||||
|
sed 's/GO/\nGO\n/g' "$f" > "$temp_file"
|
||||||
|
|
||||||
|
# Execute the processed file
|
||||||
|
sqlcmd -S localhost -U sa -P $SA_PASSWORD -d st-database -i "$temp_file"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Warning: Script $f had some errors but continuing..."
|
||||||
|
rm "$temp_file" # Clean up temp file
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean up temp file
|
||||||
|
rm "$temp_file"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "All scripts executed. SQL Server is ready."
|
||||||
|
fi
|
||||||
|
|
||||||
# Keep container running
|
# Keep container running
|
||||||
while true; do
|
while true; do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user