Files
autocrm/docker/entrypoint.sh
T
Vasyka cbf8deabf3 Fix labor table grouping colspan + auto-import catalog on deploy
- LaborResource: hide category column from data rows by default
  (toggleable) so group headers span all columns cleanly; the group
  header already shows the localized category name
- ImportLaborCatalogCommand: add --all flag to iterate every company,
  refactor into importForCompany() helper, keep idempotent (skips
  existing codes, updates only with --force)
- entrypoint.sh: run catalog:import-labors --all after each deploy so
  all 386 operations + 45 categories are seeded automatically

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-08 05:07:32 +00:00

57 lines
2.3 KiB
Bash

#!/bin/sh
set -e
cd /app
# Ensure storage subdirs exist
mkdir -p storage/framework/{cache,sessions,views,testing} storage/logs storage/app/public bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true
# DESTRUCTIVE: drops all tables + re-runs migrations + seed.
# Set in Coolify only when intentionally resetting DB. Remove after.
if [ "${RUN_FRESH_MIGRATE:-false}" = "true" ]; then
echo "[entrypoint] !!! RUN_FRESH_MIGRATE=true — dropping all tables !!!"
php artisan migrate:fresh --force --seed --no-interaction || echo "[entrypoint] fresh failed"
elif [ "${RUN_MIGRATIONS:-true}" = "true" ]; then
echo "[entrypoint] Running migrations..."
php artisan migrate --force --no-interaction || echo "[entrypoint] migrate failed (non-fatal)"
fi
# Import labor catalog for all companies (idempotent — skips existing records by code).
php artisan catalog:import-labors --all --no-interaction 2>&1 | tail -5 || echo "[entrypoint] catalog import failed (non-fatal)"
# Run seeders if requested. Uses firstOrCreate so it's idempotent.
if [ "${RUN_SEED:-false}" = "true" ] && [ "${RUN_FRESH_MIGRATE:-false}" != "true" ]; then
echo "[entrypoint] Running database seed..."
php artisan db:seed --force --no-interaction || echo "[entrypoint] seed failed (non-fatal)"
fi
# Production caches
if [ "${APP_ENV:-production}" = "production" ]; then
echo "[entrypoint] Caching config/routes/views..."
php artisan config:cache --no-interaction || true
php artisan route:cache --no-interaction || true
php artisan view:clear --no-interaction || true
php artisan view:cache --no-interaction || true
php artisan event:cache --no-interaction || true
php artisan filament:cache-components --no-interaction || true
fi
# Storage symlink (idempotent)
php artisan storage:link --no-interaction 2>/dev/null || true
# Background scheduler — fires every minute. Drives backup:tenants and other cron jobs.
# Skipped if RUN_SCHEDULER=false (e.g., when running multiple replicas).
if [ "${RUN_SCHEDULER:-true}" = "true" ]; then
echo "[entrypoint] Starting Laravel scheduler in background..."
(
while true; do
php artisan schedule:run --no-interaction >> storage/logs/scheduler.log 2>&1 || true
sleep 60
done
) &
fi
echo "[entrypoint] Starting: $@"
exec "$@"