Files
newznab-tmux-NNTmux/docker-entrypoint.sh
T
vcorre 0037ab6e73 Add Elasticsearch index creation and population to entrypoint
This update ensures the Elasticsearch indexes are created and populated during container startup. It improves initial setup automation by running relevant Artisan commands to handle data indexing and predb population seamlessly.
2024-12-19 15:27:49 +01:00

64 lines
2.1 KiB
Bash

#!/bin/sh
set -e
# Create .env file if it doesn't exist
if [ ! -f .env ]; then
echo "Creating .env file from environment variables..."
envsubst < .env.dist > .env
fi
if [ "$1" != 'php' ] && [ "$1" != 'sh' ]; then
# Install dependencies if not already installed
if [ ! -d 'vendor/' ]; then
echo "Installing dependencies via Composer..."
composer install --prefer-dist --no-progress --no-interaction
fi
# Check and wait for the database to be ready
if grep -q ^DB_HOST= .env; then
echo "Waiting for the database to be ready..."
ATTEMPTS_LEFT_TO_REACH_DATABASE=60
until [ $ATTEMPTS_LEFT_TO_REACH_DATABASE -eq 0 ] || DATABASE_ERROR=$(php artisan db:show 2>&1); do
if [ $? -ne 0 ]; then
# Stop attempting in case of an error
ATTEMPTS_LEFT_TO_REACH_DATABASE=$((ATTEMPTS_LEFT_TO_REACH_DATABASE - 1))
echo "Database not ready yet. Attempts left: $ATTEMPTS_LEFT_TO_REACH_DATABASE."
sleep 1
else
break
fi
done
if [ $ATTEMPTS_LEFT_TO_REACH_DATABASE -eq 0 ]; then
echo "Failed to connect to the database:"
echo "$DATABASE_ERROR"
exit 1
else
echo "Database is now ready."
fi
fi
echo "Clearing application cache..."
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
echo "Caching configuration and routes..."
php artisan config:cache
php artisan route:cache
# Run Laravel-specific post-installation commands
echo "NNTmux installation..."
php artisan nntmux:install --yes
# Set permissions for storage and bootstrap/cache directories
echo "Setting permissions on storage and bootstrap/cache directories..."
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
php artisan nntmux:create-es-indexes
php artisan nntmux:populate --elastic --releases
php artisan nntmux:populate --elastic --predb
fi
# Run the PHP entry point with arguments
exec docker-php-entrypoint "$@"