mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-06 13:10:37 -04:00
feat(database): default new Redis databases to the Valkey image
Change the standalone_redis image column default to valkey/valkey:9-alpine. Existing databases keep their current image. Update the API docs, OpenAPI specs and image helper text to name Valkey as the default and redis:8 as the Redis example. Also restyle the status badges and database image cards on the new resource page.
This commit is contained in:
@@ -1731,7 +1731,7 @@ class DatabasesController extends Controller
|
||||
|
||||
#[OA\Post(
|
||||
summary: 'Create (Redis / Valkey)',
|
||||
description: 'Create a new Redis or Valkey database. Set image to a Valkey image (for example valkey/valkey:9-alpine) for Valkey.',
|
||||
description: 'Create a new Redis or Valkey database. Valkey (valkey/valkey:9-alpine) is the default. Set image to a Redis image (for example redis:8) for Redis.',
|
||||
path: '/databases/redis',
|
||||
operationId: 'create-database-redis',
|
||||
security: [
|
||||
@@ -1757,7 +1757,7 @@ class DatabasesController extends Controller
|
||||
'redis_conf' => ['type' => 'string', 'description' => 'Redis conf'],
|
||||
'name' => ['type' => 'string', 'description' => 'Name of the database'],
|
||||
'description' => ['type' => 'string', 'description' => 'Description of the database'],
|
||||
'image' => ['type' => 'string', 'description' => 'Docker image of the database. Default: redis:7.2. For Valkey, use a Valkey image, for example valkey/valkey:9-alpine.'],
|
||||
'image' => ['type' => 'string', 'description' => 'Docker image of the database. Default: valkey/valkey:9-alpine. For Redis, use a Redis image, for example redis:8.'],
|
||||
'is_public' => ['type' => 'boolean', 'description' => 'Is the database public?'],
|
||||
'public_port' => ['type' => 'integer', 'description' => 'Public port of the database'],
|
||||
'public_port_timeout' => ['type' => 'integer', 'description' => 'Public port timeout in seconds (default: 3600)'],
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Existing databases keep their image. Only new databases use Valkey.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('standalone_redis', function (Blueprint $table) {
|
||||
$table->string('image')->default('valkey/valkey:9-alpine')->change();
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('standalone_redis', function (Blueprint $table) {
|
||||
$table->string('image')->default('redis:8')->change();
|
||||
});
|
||||
}
|
||||
};
|
||||
+2
-2
@@ -9008,7 +9008,7 @@
|
||||
"Databases"
|
||||
],
|
||||
"summary": "Create (Redis \/ Valkey)",
|
||||
"description": "Create a new Redis or Valkey database. Set image to a Valkey image (for example valkey\/valkey:9-alpine) for Valkey.",
|
||||
"description": "Create a new Redis or Valkey database. Valkey (valkey\/valkey:9-alpine) is the default. Set image to a Redis image (for example redis:8) for Redis.",
|
||||
"operationId": "create-database-redis",
|
||||
"requestBody": {
|
||||
"description": "Database data",
|
||||
@@ -9059,7 +9059,7 @@
|
||||
},
|
||||
"image": {
|
||||
"type": "string",
|
||||
"description": "Docker image of the database. Default: redis:7.2. For Valkey, use a Valkey image, for example valkey\/valkey:9-alpine."
|
||||
"description": "Docker image of the database. Default: valkey\/valkey:9-alpine. For Redis, use a Redis image, for example redis:8."
|
||||
},
|
||||
"is_public": {
|
||||
"type": "boolean",
|
||||
|
||||
+2
-2
@@ -5905,7 +5905,7 @@ paths:
|
||||
tags:
|
||||
- Databases
|
||||
summary: 'Create (Redis / Valkey)'
|
||||
description: 'Create a new Redis or Valkey database. Set image to a Valkey image (for example valkey/valkey:9-alpine) for Valkey.'
|
||||
description: 'Create a new Redis or Valkey database. Valkey (valkey/valkey:9-alpine) is the default. Set image to a Redis image (for example redis:8) for Redis.'
|
||||
operationId: create-database-redis
|
||||
requestBody:
|
||||
description: 'Database data'
|
||||
@@ -5946,7 +5946,7 @@ paths:
|
||||
description: 'Description of the database'
|
||||
image:
|
||||
type: string
|
||||
description: 'Docker image of the database. Default: redis:7.2. For Valkey, use a Valkey image, for example valkey/valkey:9-alpine.'
|
||||
description: 'Docker image of the database. Default: valkey/valkey:9-alpine. For Redis, use a Redis image, for example redis:8.'
|
||||
is_public:
|
||||
type: boolean
|
||||
description: 'Is the database public?'
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<x-forms.input label="Description" id="description" canGate="update" :canResource="$database" />
|
||||
<div class="lg:col-span-2">
|
||||
<x-forms.input label="Image" id="image" required canGate="update" :canResource="$database"
|
||||
helper="Use a published Redis or Valkey image from Docker Hub, for example redis:7.2 or valkey/valkey:9-alpine." />
|
||||
helper="Use a published Redis or Valkey image from Docker Hub, for example valkey/valkey:9-alpine or redis:8." />
|
||||
</div>
|
||||
</div>
|
||||
<x-application.settings-subsection id="credentials-section" title="Credentials" helper="Keep these values aligned with the credentials configured inside Redis / Valkey.">
|
||||
|
||||
@@ -717,7 +717,7 @@
|
||||
{{ $server->description ?: $server->ip }}
|
||||
</span>
|
||||
</span>
|
||||
<x-status-badge status="running" text="Ready" />
|
||||
<x-status-badge type="success" status="Running" />
|
||||
</button>
|
||||
@empty
|
||||
@if ($buildServers?->isEmpty() && ! $onlyBuildServerAvailable)
|
||||
@@ -744,7 +744,7 @@
|
||||
<span class="block text-[11px] text-neutral-500 dark:text-fg-faint">Build-only servers
|
||||
cannot host resources.</span>
|
||||
</span>
|
||||
<x-status-badge status="exited" text="Build only" />
|
||||
<x-status-badge status="Build only" />
|
||||
<a href="{{ route('server.show', ['server_uuid' => $buildServer->uuid]) }}"
|
||||
{{ wireNavigate() }} class="button">Settings</a>
|
||||
</div>
|
||||
@@ -788,7 +788,7 @@
|
||||
<span class="block truncate text-[11px] text-neutral-500 dark:text-fg-faint">Network:
|
||||
{{ $standaloneDocker->network }}</span>
|
||||
</span>
|
||||
<x-status-badge status="running" text="Standalone Docker" />
|
||||
<x-status-badge type="success" status="Standalone Docker" />
|
||||
</button>
|
||||
@endforeach
|
||||
@endif
|
||||
@@ -803,7 +803,7 @@
|
||||
needs bundled extensions.</p>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 gap-3 lg:grid-cols-2">
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('postgres:18-alpine'))"
|
||||
:disabled="selecting">
|
||||
@@ -826,7 +826,7 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('postgres:17-alpine'))"
|
||||
:disabled="selecting">
|
||||
@@ -847,7 +847,7 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('postgres:16-alpine'))"
|
||||
:disabled="selecting">
|
||||
@@ -868,7 +868,7 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('supabase/postgres:17.11.0.018'))"
|
||||
:disabled="selecting">
|
||||
@@ -889,7 +889,7 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('postgis/postgis:18-3.7-alpine'))"
|
||||
:disabled="selecting">
|
||||
@@ -912,7 +912,7 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('pgvector/pgvector:pg18'))"
|
||||
:disabled="selecting">
|
||||
@@ -933,7 +933,7 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('pgvector/pgvector:pg17'))"
|
||||
:disabled="selecting">
|
||||
@@ -965,7 +965,7 @@
|
||||
and configuration.</p>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 gap-3 lg:grid-cols-2">
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('valkey/valkey:9-alpine'))"
|
||||
:disabled="selecting">
|
||||
@@ -987,12 +987,12 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-[10px] border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 hover:bg-neutral-50 dark:border-white/[0.07] dark:bg-surface dark:hover:border-white/[0.12] dark:hover:bg-white/[0.035]"
|
||||
<div class="group relative flex min-h-24 items-center gap-3 rounded-xl border border-neutral-200 bg-white p-4 transition-colors hover:border-neutral-300 dark:border-white/[0.08] dark:bg-white/[0.05] dark:hover:border-white/[0.14]"
|
||||
:class="{ 'cursor-pointer': !selecting, 'cursor-not-allowed opacity-50': selecting }"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('redis:7.2'))"
|
||||
x-on:click="!selecting && (selecting = true, $wire.setDatabaseImage('redis:8'))"
|
||||
:disabled="selecting">
|
||||
<div class="flex flex-col">
|
||||
<div class="text-[13px] font-semibold text-black dark:text-fg">Redis 7.2</div>
|
||||
<div class="text-[13px] font-semibold text-black dark:text-fg">Redis 8</div>
|
||||
<div class="mt-1 pr-8 text-[11px] leading-4 text-neutral-500 dark:text-fg-faint">
|
||||
The original in-memory key-value store.
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user