#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ENV_FILE="$ROOT_DIR/.env" ENV_EXAMPLE="$ROOT_DIR/.env.example" RUNTIME_DIR="$ROOT_DIR/runtime" DB_INIT_DIR="$RUNTIME_DIR/db-init" CRASH_CONFIG="$RUNTIME_DIR/crash-config.php" SRC_SCHEMA="$ROOT_DIR/../examples/crash_reporter/backend/sql/schema.mariadb.sql" SRC_MIG_004="$ROOT_DIR/../examples/crash_reporter/backend/sql/migrations/004_ticket_workflow.sql" SRC_MIG_005="$ROOT_DIR/../examples/crash_reporter/backend/sql/migrations/005_ticket_attachments.sql" if ! command -v docker >/dev/null 2>&1; then echo "docker not found in PATH" exit 1 fi if ! docker compose version >/dev/null 2>&1; then echo "docker compose plugin is required" exit 1 fi if [[ ! -f "$ENV_FILE" ]]; then cp "$ENV_EXAMPLE" "$ENV_FILE" echo "Created .env from .env.example" fi set -a # shellcheck disable=SC1090 source "$ENV_FILE" set +a mkdir -p "$DB_INIT_DIR" cat >"$CRASH_CONFIG" < 'Android Cast Crashes', 'base_path' => '/app/androidcast_project/crashes', 'db' => [ 'driver' => 'mysql', 'sqlite_path' => __DIR__ . '/../data/crashes.sqlite', 'mysql' => [ 'host' => 'mariadb', 'port' => 3306, 'socket' => '', 'database' => '${MARIADB_DATABASE}', 'username' => '${MARIADB_USER}', 'password' => '${MARIADB_PASSWORD}', 'charset' => 'utf8mb4', ], ], 'session_name' => 'ac_crash_sess', 'debug' => true, 'rbac' => [ 'default_company_slug' => 'default', 'default_company_id' => 1, ], ]; EOF cp "$SRC_SCHEMA" "$DB_INIT_DIR/010_schema.sql" { echo "USE \`${MARIADB_DATABASE}\`;" cat "$SRC_MIG_004" } >"$DB_INIT_DIR/040_ticket_workflow.sql" { echo "USE \`${MARIADB_DATABASE}\`;" cat "$SRC_MIG_005" } >"$DB_INIT_DIR/050_ticket_attachments.sql" echo "Pulling images..." docker compose -f "$ROOT_DIR/docker-compose.yml" pull landing-fe gitea-fe crashes-fe mariadb gitea || true echo "Starting/updating stack..." docker compose -f "$ROOT_DIR/docker-compose.yml" up -d --build --remove-orphans --force-recreate echo echo "Stack is up." echo "Landing: ${PUBLIC_BASE_URL}/app/androidcast_project/" echo "Gitea (direct FE): http://localhost:${GITEA_FE_PORT}/app/androidcast_project/git/" echo "Crashes (direct FE): http://localhost:${CRASHES_FE_PORT}/app/androidcast_project/crashes/" echo docker compose -f "$ROOT_DIR/docker-compose.yml" ps