Refactors the Appwrite and Beszel service-specific application settings to use a centralized constant-based approach, following the same pattern as NEEDS_TO_CONNECT_TO_PREDEFINED_NETWORK. Changes: - Added NEEDS_TO_DISABLE_GZIP constant for services requiring gzip disabled - Added NEEDS_TO_DISABLE_STRIPPREFIX constant for services requiring stripprefix disabled - Created applyServiceApplicationPrerequisites() helper function in bootstrap/helpers/services.php - Updated all service creation flows to use the centralized helper: * app/Livewire/Project/Resource/Create.php (web handler) * app/Http/Controllers/Api/ServicesController.php (API handler - BUG FIX) * app/Livewire/Project/New/DockerCompose.php (custom compose handler) * app/Http/Controllers/Api/ApplicationsController.php (API custom compose handler) - Added comprehensive unit tests for the new helper function Benefits: - Single source of truth for service prerequisites - DRY - eliminates code duplication between web and API handlers - Fixes bug where API-created services didn't get prerequisites applied - Easy to extend for future services (just edit the constant) - More maintainable and testable Related commits:3a94f1ea1(Beszel),02b18c86e(Appwrite) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
80 lines
2 KiB
PHP
80 lines
2 KiB
PHP
<?php
|
|
|
|
const REDACTED = '<REDACTED>';
|
|
const DATABASE_TYPES = ['postgresql', 'redis', 'mongodb', 'mysql', 'mariadb', 'keydb', 'dragonfly', 'clickhouse'];
|
|
const VALID_CRON_STRINGS = [
|
|
'every_minute' => '* * * * *',
|
|
'hourly' => '0 * * * *',
|
|
'daily' => '0 0 * * *',
|
|
'weekly' => '0 0 * * 0',
|
|
'monthly' => '0 0 1 * *',
|
|
'yearly' => '0 0 1 1 *',
|
|
'@hourly' => '0 * * * *',
|
|
'@daily' => '0 0 * * *',
|
|
'@weekly' => '0 0 * * 0',
|
|
'@monthly' => '0 0 1 * *',
|
|
'@yearly' => '0 0 1 1 *',
|
|
];
|
|
const RESTART_MODE = 'unless-stopped';
|
|
|
|
const DATABASE_DOCKER_IMAGES = [
|
|
'bitnami/mariadb',
|
|
'bitnami/mongodb',
|
|
'bitnami/redis',
|
|
'bitnamilegacy/mariadb',
|
|
'bitnamilegacy/mongodb',
|
|
'bitnamilegacy/redis',
|
|
'bitnamisecure/mariadb',
|
|
'bitnamisecure/mongodb',
|
|
'bitnamisecure/redis',
|
|
'mysql',
|
|
'bitnami/mysql',
|
|
'bitnamilegacy/mysql',
|
|
'bitnamisecure/mysql',
|
|
'mysql/mysql-server',
|
|
'mariadb',
|
|
'postgis/postgis',
|
|
'postgres',
|
|
'bitnami/postgresql',
|
|
'bitnamilegacy/postgresql',
|
|
'bitnamisecure/postgresql',
|
|
'supabase/postgres',
|
|
'elestio/postgres',
|
|
'mongo',
|
|
'redis',
|
|
'memcached',
|
|
'couchdb',
|
|
'neo4j',
|
|
'influxdb',
|
|
'clickhouse/clickhouse-server',
|
|
'timescaledb/timescaledb',
|
|
'pgvector/pgvector',
|
|
];
|
|
const SPECIFIC_SERVICES = [
|
|
'quay.io/minio/minio',
|
|
'minio/minio',
|
|
'ghcr.io/coollabsio/minio',
|
|
'coollabsio/minio',
|
|
'svhd/logto',
|
|
];
|
|
|
|
// Based on /etc/os-release
|
|
const SUPPORTED_OS = [
|
|
'ubuntu debian raspbian pop',
|
|
'centos fedora rhel ol rocky amzn almalinux',
|
|
'sles opensuse-leap opensuse-tumbleweed',
|
|
'arch',
|
|
'alpine',
|
|
];
|
|
|
|
const NEEDS_TO_CONNECT_TO_PREDEFINED_NETWORK = [
|
|
'pgadmin',
|
|
'postgresus',
|
|
];
|
|
const NEEDS_TO_DISABLE_GZIP = [
|
|
'beszel' => ['beszel'],
|
|
];
|
|
const NEEDS_TO_DISABLE_STRIPPREFIX = [
|
|
'appwrite' => ['appwrite', 'appwrite-console', 'appwrite-realtime'],
|
|
];
|
|
const SHARED_VARIABLE_TYPES = ['team', 'project', 'environment'];
|