#!/bin/bash set -euo pipefail cd /var/www/html # region agent log fc_debug_log() { local hypothesis="$1" local message="$2" local data_json="${3:-{}}" local data_b64 data_b64=$(printf '%s' "$data_json" | base64 | tr -d '\n') FC_DEBUG_HYPOTHESIS="$hypothesis" FC_DEBUG_MESSAGE="$message" FC_DEBUG_DATA_B64="$data_b64" php -r ' $json = base64_decode(getenv("FC_DEBUG_DATA_B64") ?: ""); $data = json_decode($json, true); if (!is_array($data) && str_ends_with($json, "}}")) { $data = json_decode(substr($json, 0, -1), true); } $payload = [ "sessionId" => "885d37", "runId" => "coolify-bad-gateway", "hypothesisId" => getenv("FC_DEBUG_HYPOTHESIS") ?: "", "location" => "docker/entrypoint.sh", "message" => getenv("FC_DEBUG_MESSAGE") ?: "", "data" => [ "raw_json" => $json, "parsed" => is_array($data) ? $data : null, ], "timestamp" => (int) round(microtime(true) * 1000), ]; $line = json_encode($payload, JSON_UNESCAPED_SLASHES) . PHP_EOL; @file_put_contents("/var/www/html/debug-885d37.log", $line, FILE_APPEND); fwrite(STDERR, "agent_debug " . $line); ' } # endregion echo "[flixcooks] Waiting for database..." TRIES=0 MAX_TRIES="${DB_WAIT_MAX_TRIES:-30}" start_data=$(php -r 'echo json_encode([ "database_url_present" => getenv("DATABASE_URL") !== false && getenv("DATABASE_URL") !== "", "run_db_seed" => getenv("RUN_DB_SEED") ?: "", "db_wait_max_tries" => getenv("DB_WAIT_MAX_TRIES") ?: "30", "entrypoint_args" => array_slice($argv, 1), "schema_file_exists" => file_exists("/var/www/html/scripts/schema.sql"), "seed_file_exists" => file_exists("/var/www/html/data/recipes.json"), ]);' -- "$@") fc_debug_log "H1,H2,H4" "entrypoint started" "$start_data" until db_check_output=$(php scripts/db-check.php 2>&1); do TRIES=$((TRIES + 1)) fail_data=$(php -r 'echo json_encode([ "attempt" => (int) $argv[1], "max_tries" => (int) $argv[2], "db_check_output" => $argv[3], ]);' -- "$TRIES" "$MAX_TRIES" "$db_check_output") fc_debug_log "H1" "db-check failed while waiting" "$fail_data" if [ "$TRIES" -ge "$MAX_TRIES" ]; then echo "[flixcooks] Database not reachable after ${MAX_TRIES} attempts." >&2 fc_debug_log "H1" "entrypoint exiting because database never became reachable" "$fail_data" exit 1 fi sleep 2 done success_data=$(php -r 'echo json_encode([ "attempts_before_success" => (int) $argv[1], "db_check_output" => $argv[2], ]);' -- "$TRIES" "$db_check_output") fc_debug_log "H1" "db-check succeeded" "$success_data" echo "[flixcooks] Applying schema..." if schema_output=$(php -r "require 'helpers.php'; require_database(); echo \"schema ok\n\";" 2>&1); then schema_data=$(php -r 'echo json_encode(["schema_output" => $argv[1]]);' -- "$schema_output") fc_debug_log "H2,H4" "schema apply succeeded" "$schema_data" else code=$? schema_data=$(php -r 'echo json_encode(["exit_code" => (int) $argv[1], "schema_output" => $argv[2]]);' -- "$code" "$schema_output") fc_debug_log "H2,H4" "schema apply failed, entrypoint exiting" "$schema_data" echo "$schema_output" >&2 exit "$code" fi if [ "${RUN_DB_SEED:-false}" = "true" ]; then echo "[flixcooks] Seeding recipes from data/recipes.json..." if seed_output=$(php scripts/db-seed.php 2>&1); then seed_data=$(php -r 'echo json_encode(["seed_output" => $argv[1]]);' -- "$seed_output") fc_debug_log "H4" "seed succeeded" "$seed_data" else code=$? seed_data=$(php -r 'echo json_encode(["exit_code" => (int) $argv[1], "seed_output" => $argv[2]]);' -- "$code" "$seed_output") fc_debug_log "H4" "seed failed, entrypoint exiting" "$seed_data" echo "$seed_output" >&2 exit "$code" fi else fc_debug_log "H4" "seed skipped" '{"run_db_seed":"false"}' fi echo "[flixcooks] Starting Apache..." port_data=$(php -r 'echo json_encode([ "env_port" => getenv("PORT") ?: "", "env_host" => getenv("HOST") ?: "", "apache_document_root" => getenv("APACHE_DOCUMENT_ROOT") ?: "", "expected_container_port" => 80, "coolify_hint" => "Application port must be 80", ]);') fc_debug_log "H3,H6" "proxy port context before apache start" "$port_data" apache_config_output=$(apache2ctl -S 2>&1 || true) apache_config_data=$(php -r 'echo json_encode(["apache2ctl_S" => $argv[1]]);' -- "$apache_config_output") fc_debug_log "H3,H6" "apache virtualhost config before start" "$apache_config_data" fc_debug_log "H3" "executing web server command" "$(php -r 'echo json_encode(["command" => array_slice($argv, 1)]);' -- "$@")" exec "$@"