Add centralized stop grace period resolution for application settings and use it across manual stops, preview stops, and deployments. Validate the Livewire advanced setting against shared min/max constants and cover persistence, fillable creation, and fallback behavior with tests.
106 lines
2.9 KiB
PHP
106 lines
2.9 KiB
PHP
<?php
|
|
|
|
use App\Models\StandaloneClickhouse;
|
|
use App\Models\StandaloneDragonfly;
|
|
use App\Models\StandaloneKeydb;
|
|
use App\Models\StandaloneMariadb;
|
|
use App\Models\StandaloneMongodb;
|
|
use App\Models\StandaloneMysql;
|
|
use App\Models\StandalonePostgresql;
|
|
use App\Models\StandaloneRedis;
|
|
|
|
const REDACTED = '<REDACTED>';
|
|
const DATABASE_TYPES = ['postgresql', 'redis', 'mongodb', 'mysql', 'mariadb', 'keydb', 'dragonfly', 'clickhouse'];
|
|
const STANDALONE_DATABASE_MODELS = [
|
|
'postgresql' => StandalonePostgresql::class,
|
|
'redis' => StandaloneRedis::class,
|
|
'mongodb' => StandaloneMongodb::class,
|
|
'mysql' => StandaloneMysql::class,
|
|
'mariadb' => StandaloneMariadb::class,
|
|
'keydb' => StandaloneKeydb::class,
|
|
'dragonfly' => StandaloneDragonfly::class,
|
|
'clickhouse' => StandaloneClickhouse::class,
|
|
];
|
|
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 DEFAULT_STOP_GRACE_PERIOD_SECONDS = 30;
|
|
const MIN_STOP_GRACE_PERIOD_SECONDS = 1;
|
|
const MAX_STOP_GRACE_PERIOD_SECONDS = 3600;
|
|
|
|
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',
|
|
'timescaledb', // Matches timescale/timescaledb
|
|
'timescaledb-ha', // Matches timescale/timescaledb-ha
|
|
'pgvector/pgvector',
|
|
];
|
|
const SPECIFIC_SERVICES = [
|
|
'quay.io/minio/minio',
|
|
'minio/minio',
|
|
'ghcr.io/coollabsio/minio',
|
|
'coollabsio/minio',
|
|
'svhd/logto',
|
|
'dxflrs/garage',
|
|
];
|
|
|
|
// 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',
|
|
'databasus',
|
|
'redis-insight',
|
|
];
|
|
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', 'server'];
|