#!/bin/sh set -e # Logging functions log() { level=$1 shift echo "[$level] $*" } info() { log "INFO" "$@" } warning() { log "WARNING" "$@" } fatal() { log "ERROR" "$@" >&2 exit 1 } is_true() { case "$1" in 1|true|TRUE|True|yes|YES|on|ON) return 0 ;; *) return 1 ;; esac } APP_DIR="${APP_DIR:-/var/www/html}" USER_NAME="${USER_NAME:-www-data}" LARAVEL_PROCS_NUMBER="${LARAVEL_PROCS_NUMBER:-1}" LARAVEL_QUEUE_OPTIONS="${LARAVEL_QUEUE_OPTIONS:---sleep=3 --tries=3}" # Check if custom php.ini file exists PHP_INI_SOURCE="$APP_DIR/conf/php/php.ini" PHP_INI_TARGET="$PHP_INI_DIR/conf.d/php.ini" if [ -f "$PHP_INI_SOURCE" ]; then cp "$PHP_INI_SOURCE" "$PHP_INI_TARGET" info "Custom php.ini file found and copied to $PHP_INI_TARGET" fi # Run any other command (e.g. "php artisan migrate", "composer install", "bash") if [ $# -gt 0 ] && [ "$1" != "entrypoint" ] && [ "$1" != "supervisord" ]; then exec "$@" fi # Banner echo "" echo "***********************************************************" echo " Starting LARAVEL PHP-FPM Container " echo "***********************************************************" # Check if the artisan file exists ARTISAN_PATH="$APP_DIR/artisan" SUPERVISOR_TASK="/etc/supervisor/conf.d/laravel-worker.conf" if [ -f "$ARTISAN_PATH" ]; then info "Artisan file found, creating Laravel supervisor config..." : > "$SUPERVISOR_TASK" if is_true "${LARAVEL_SCHEDULER_ENABLED:-true}"; then cat >> "$SUPERVISOR_TASK" <> "$SUPERVISOR_TASK" </dev/null || true info "Artisan file not found at $ARTISAN_PATH" fi # Start Supervisor (programs drop privileges to $USER_NAME themselves) if [ "$(id -u)" = "0" ]; then exec supervisord -c /etc/supervisor/supervisord.conf -u root fi exec supervisord -c /etc/supervisor/supervisord.conf