65 lines
1.5 KiB
Bash
65 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
main() {
|
|
if [ "$IS_API_WORKER" = "true" ]; then
|
|
# This is the API worker, skip setup and just run the command
|
|
exec "$@"
|
|
else
|
|
# This is the API service, run full setup
|
|
prep_file_permissions
|
|
prep_storage
|
|
wait_for_db
|
|
apply_db_migrations
|
|
run_init_project
|
|
run_server "$@"
|
|
fi
|
|
}
|
|
|
|
prep_file_permissions() {
|
|
chmod a+x ./artisan
|
|
}
|
|
|
|
prep_storage() {
|
|
# Create Laravel-specific directories
|
|
mkdir -p /persist/storage/framework/cache/data
|
|
mkdir -p /persist/storage/framework/sessions
|
|
mkdir -p /persist/storage/framework/views
|
|
|
|
# Set permissions for the entire storage directory
|
|
chown -R www-data:www-data /persist/storage
|
|
chmod -R 775 /persist/storage
|
|
|
|
# Create symlink to the correct storage location
|
|
ln -sf /persist/storage /usr/share/nginx/html/storage
|
|
|
|
touch /var/log/opnform.log
|
|
chown www-data /var/log/opnform.log
|
|
|
|
# Ensure proper permissions for the storage directory
|
|
chown -R www-data:www-data /usr/share/nginx/html/storage
|
|
chmod -R 775 /usr/share/nginx/html/storage
|
|
}
|
|
|
|
wait_for_db() {
|
|
echo "Waiting for DB to be ready"
|
|
until ./artisan migrate:status 2>&1 | grep -q -E "(Migration table not found|Migration name)"; do
|
|
sleep 1
|
|
done
|
|
}
|
|
|
|
apply_db_migrations() {
|
|
echo "Running DB Migrations"
|
|
./artisan migrate --force
|
|
}
|
|
|
|
run_init_project() {
|
|
echo "Running app:init-project command"
|
|
./artisan app:init-project
|
|
}
|
|
|
|
run_server() {
|
|
echo "Starting server $@"
|
|
exec "$@"
|
|
}
|
|
|
|
main "$@" |