Adds healthcheck to the database service in docker-compose and ensures the web service waits for the database to be healthy before starting. Updates script.sh to wait for the database to be ready before proceeding. Enhances the Cypress workflow to retry DXCC population for improved test reliability.
110 行
无行尾
3.1 KiB
Bash
可执行文件
110 行
无行尾
3.1 KiB
Bash
可执行文件
#!/bin/bash
|
|
|
|
# Define the file path for .env and the file to modify
|
|
if [ -f "./.env" ]; then
|
|
ENV_FILE="./.env"
|
|
else
|
|
ENV_FILE="./.env.sample"
|
|
fi
|
|
CONFIG_FILE="install/config/config.php"
|
|
DATABASE_FILE="install/config/database.php"
|
|
DEST_DIR="application/config"
|
|
|
|
# Check if .env file exists
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo ".env file not found!"
|
|
exit 1
|
|
fi
|
|
|
|
# Read the .env file
|
|
source $ENV_FILE
|
|
|
|
# Check if MYSQL_DATABASE is set
|
|
if [ -z "${MYSQL_DATABASE}" ]; then
|
|
echo "MYSQL_DATABASE is not set in .env file!"
|
|
exit 1
|
|
fi
|
|
# Check if MYSQL_USER is set
|
|
if [ -z "${MYSQL_USER}" ]; then
|
|
echo "MYSQL_USER is not set in .env file!"
|
|
exit 1
|
|
fi
|
|
# Check if MYSQL_PASSWORD is set
|
|
if [ -z "${MYSQL_PASSWORD}" ]; then
|
|
echo "MYSQL_PASSWORD is not set in .env file!"
|
|
exit 1
|
|
fi
|
|
# Check if MYSQL_HOST is set
|
|
if [ -z "${MYSQL_HOST}" ]; then
|
|
echo "MYSQL_HOST is not set in .env file!"
|
|
exit 1
|
|
fi
|
|
# Check if BASE_LOCATOR is set
|
|
if [ -z "${BASE_LOCATOR}" ]; then
|
|
echo "BASE_LOCATOR is not set in .env file!"
|
|
exit 1
|
|
fi
|
|
# Check if WEBSITE_URL is set
|
|
if [ -z "${WEBSITE_URL}" ]; then
|
|
echo "WEBSITE_URL is not set in .env file!"
|
|
exit 1
|
|
fi
|
|
# Check if DIRECTORY is set
|
|
if [ -z "${DIRECTORY}" ]; then
|
|
echo "DIRECTORY is not set in .env file!"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if destination directory exists, if not create it
|
|
if [ ! -d "$DEST_DIR" ]; then
|
|
mkdir -p $DEST_DIR
|
|
fi
|
|
|
|
|
|
# Use sed with a different delimiter (`|`) to avoid conflicts with special characters
|
|
sed -i "s|%DATABASE%|${MYSQL_DATABASE}|g" $DATABASE_FILE
|
|
sed -i "s|%USERNAME%|${MYSQL_USER}|g" $DATABASE_FILE
|
|
sed -i "s|%PASSWORD%|${MYSQL_PASSWORD}|g" $DATABASE_FILE
|
|
sed -i "s|%HOSTNAME%|${MYSQL_HOST}|g" $DATABASE_FILE
|
|
sed -i "s|%baselocator%|${BASE_LOCATOR}|g" $CONFIG_FILE
|
|
sed -i "s|%websiteurl%|${WEBSITE_URL}|g" $CONFIG_FILE
|
|
sed -i "s|%directory%|${DIRECTORY}|g" $CONFIG_FILE
|
|
|
|
# Move the files to the destination directory
|
|
mv $CONFIG_FILE $DEST_DIR
|
|
mv $DATABASE_FILE $DEST_DIR
|
|
|
|
# Delete the /install directory
|
|
rm -rf /install
|
|
|
|
echo "Replacement complete."
|
|
|
|
# Wait for database to be ready
|
|
echo "Waiting for database to be ready..."
|
|
until mysql -h"$MYSQL_HOST" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SELECT 1" > /dev/null 2>&1; do
|
|
echo "Database is not ready yet. Waiting 5 seconds..."
|
|
sleep 5
|
|
done
|
|
echo "Database is ready!"
|
|
|
|
# Set Permissions
|
|
chown -R root:www-data /var/www/html/application/config/
|
|
chown -R root:www-data /var/www/html/application/logs/
|
|
chown -R root:www-data /var/www/html/assets/qslcard/
|
|
chown -R root:www-data /var/www/html/backup/
|
|
chown -R root:www-data /var/www/html/updates/
|
|
chown -R root:www-data /var/www/html/uploads/
|
|
chown -R root:www-data /var/www/html/images/eqsl_card_images/
|
|
chown -R root:www-data /var/www/html/assets/json
|
|
|
|
chmod -R g+rw /var/www/html/application/config/
|
|
chmod -R g+rw /var/www/html/application/logs/
|
|
chmod -R g+rw /var/www/html/assets/qslcard/
|
|
chmod -R g+rw /var/www/html/backup/
|
|
chmod -R g+rw /var/www/html/updates/
|
|
chmod -R g+rw /var/www/html/uploads/
|
|
chmod -R g+rw /var/www/html/images/eqsl_card_images/
|
|
chmod -R g+rw /var/www/html/assets/json
|
|
|
|
# Start Apache in the foreground
|
|
exec apache2-foreground |