85 lines
2.3 KiB
Bash
85 lines
2.3 KiB
Bash
#!/bin/bash
|
|||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "========================================"
|
||
|
|
echo " Starting Combined Application Container"
|
||
|
|
echo " Flutter APK + Backend + MySQL"
|
||
|
|
echo "========================================"
|
||
|
|
|
||
|
|
# ========================================
|
||
|
|
# Project-specific DB name
|
||
|
|
# Fill this in per project so each combined
|
||
|
|
# container keeps its own isolated local DB
|
||
|
|
# and never collides with another project.
|
||
|
|
# ========================================
|
||
|
|
|
||
|
|
DB_NAME="<PRJ_DB_NAME>"
|
||
|
|
|
||
|
|
# ========================================
|
||
|
|
# Start MySQL
|
||
|
|
# ========================================
|
||
|
|
|
||
|
|
echo "Starting MySQL..."
|
||
|
|
|
||
|
|
service mysql start
|
||
|
|
|
||
|
|
echo "Waiting for MySQL..."
|
||
|
|
|
||
|
|
until mysqladmin ping -h "127.0.0.1" --silent; do
|
||
|
|
echo "MySQL is not ready yet..."
|
||
|
|
sleep 2
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "MySQL Started Successfully."
|
||
|
|
|
||
|
|
echo "Setting MySQL root password..."
|
||
|
|
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root@1234';" 2>/dev/null || \
|
||
|
|
mysqladmin -u root password 'Root@1234' 2>/dev/null || \
|
||
|
|
echo "Root password already set or using socket auth, continuing..."
|
||
|
|
|
||
|
|
# ========================================
|
||
|
|
# Initialize Database
|
||
|
|
# ========================================
|
||
|
|
|
||
|
|
if [ -f "/usr/local/bin/init-db.sh" ]; then
|
||
|
|
|
||
|
|
echo "========================================"
|
||
|
|
echo " Initializing Database"
|
||
|
|
echo "========================================"
|
||
|
|
|
||
|
|
chmod +x /usr/local/bin/init-db.sh
|
||
|
|
|
||
|
|
DB_NAME="${DB_NAME}" /usr/local/bin/init-db.sh
|
||
|
|
|
||
|
|
echo "Database Initialization Completed."
|
||
|
|
|
||
|
|
else
|
||
|
|
|
||
|
|
echo "init-db.sh not found."
|
||
|
|
echo "Skipping database initialization."
|
||
|
|
|
||
|
|
fi
|
||
|
|
|
||
|
|
# ========================================
|
||
|
|
# Force Backend to use local combined-container MySQL
|
||
|
|
# (overrides application.properties datasource without
|
||
|
|
# touching the template file, so standalone/multi-container
|
||
|
|
# builds remain unaffected)
|
||
|
|
# ========================================
|
||
|
|
|
||
|
|
export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/${DB_NAME}?createDatabaseIfNotExist=true"
|
||
|
|
export SPRING_DATASOURCE_USERNAME="root"
|
||
|
|
export SPRING_DATASOURCE_PASSWORD="Root@1234"
|
||
|
|
|
||
|
|
# ========================================
|
||
|
|
# Start Supervisor
|
||
|
|
# ========================================
|
||
|
|
|
||
|
|
echo "========================================"
|
||
|
|
echo " Starting Supervisor"
|
||
|
|
echo "========================================"
|
||
|
|
|
||
|
|
exec /usr/bin/supervisord \
|
||
|
|
-n \
|
||
|
|
-c /etc/supervisor/conf.d/supervisord.conf
|