Merge pull request #419 from coollabsio/next

v2.8.1
This commit is contained in:
Andras Bacsai 2022-05-10 18:25:38 +02:00 committed by GitHub
commit 3802158ad5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 43 additions and 28 deletions

View File

@ -61,6 +61,7 @@ ### Applications
- Laravel - Laravel
- Rust - Rust
- Docker - Docker
- Python
### Databases ### Databases
@ -77,9 +78,9 @@ ### One-click services
You can host cool open-source services as well: You can host cool open-source services as well:
- [WordPress](https://wordpress.org) - [WordPress](https://docs.coollabs.io/coolify/services/wordpress)
- [Ghost](https://ghost.org) - [Ghost](https://ghost.org)
- [Plausible Analytics](https://plausible.io) - [Plausible Analytics](https://docs.coollabs.io/coolify/services/plausible-analytics)
- [NocoDB](https://nocodb.com) - [NocoDB](https://nocodb.com)
- [VSCode Server](https://github.com/cdr/code-server) - [VSCode Server](https://github.com/cdr/code-server)
- [MinIO](https://min.io) - [MinIO](https://min.io)

View File

@ -1,7 +1,7 @@
{ {
"name": "coolify", "name": "coolify",
"description": "An open-source & self-hostable Heroku / Netlify alternative.", "description": "An open-source & self-hostable Heroku / Netlify alternative.",
"version": "2.8.0", "version": "2.8.1",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"scripts": { "scripts": {
"dev": "docker-compose -f docker-compose-dev.yaml up -d && cross-env NODE_ENV=development & svelte-kit dev --host 0.0.0.0", "dev": "docker-compose -f docker-compose-dev.yaml up -d && cross-env NODE_ENV=development & svelte-kit dev --host 0.0.0.0",

View File

@ -406,6 +406,10 @@ export function setDefaultBaseImage(buildPack) {
} }
]; ];
const pythonVersions = [ const pythonVersions = [
{
value: 'python:3.10-alpine',
label: 'python:3.10-alpine'
},
{ {
value: 'python:3.10-buster', value: 'python:3.10-buster',
label: 'python:3.10-buster' label: 'python:3.10-buster'
@ -486,7 +490,7 @@ export function setDefaultBaseImage(buildPack) {
payload.baseBuildImages = nodeVersions; payload.baseBuildImages = nodeVersions;
} }
if (buildPack === 'python') { if (buildPack === 'python') {
payload.baseImage = 'python:3-alpine'; payload.baseImage = 'python:3.10-alpine';
payload.baseImages = pythonVersions; payload.baseImages = pythonVersions;
} }
if (buildPack === 'rust') { if (buildPack === 'rust') {

View File

@ -418,20 +418,27 @@ export async function updateWordpress({
fqdn, fqdn,
name, name,
exposePort, exposePort,
ownMysql,
mysqlDatabase, mysqlDatabase,
extraConfig, extraConfig,
mysqlHost, mysqlHost,
mysqlPort mysqlPort,
mysqlUser,
mysqlPassword
}: { }: {
id: string; id: string;
fqdn: string; fqdn: string;
name: string; name: string;
exposePort?: number; exposePort?: number;
ownMysql: boolean;
mysqlDatabase: string; mysqlDatabase: string;
extraConfig: string; extraConfig: string;
mysqlHost?: string; mysqlHost?: string;
mysqlPort?: number; mysqlPort?: number;
mysqlUser?: string;
mysqlPassword?: string;
}): Promise<Service> { }): Promise<Service> {
mysqlPassword = encrypt(mysqlPassword);
return await prisma.service.update({ return await prisma.service.update({
where: { id }, where: { id },
data: { data: {
@ -443,6 +450,8 @@ export async function updateWordpress({
mysqlDatabase, mysqlDatabase,
extraConfig, extraConfig,
mysqlHost, mysqlHost,
mysqlUser,
mysqlPassword,
mysqlPort mysqlPort
} }
} }

View File

@ -60,7 +60,7 @@
</div> </div>
{/if} {/if}
</div> </div>
<div class="flex justify-center"> <div class="flex-col justify-center">
{#if !applications || ownApplications.length === 0} {#if !applications || ownApplications.length === 0}
<div class="flex-col"> <div class="flex-col">
<div class="text-center text-xl font-bold">{$t('application.no_applications_found')}</div> <div class="text-center text-xl font-bold">{$t('application.no_applications_found')}</div>

View File

@ -47,7 +47,7 @@
</div> </div>
</div> </div>
<div class="flex justify-center"> <div class="flex-col justify-center">
{#if !databases || ownDatabases.length === 0} {#if !databases || ownDatabases.length === 0}
<div class="flex-col"> <div class="flex-col">
<div class="text-center text-xl font-bold">{$t('database.no_databases_found')}</div> <div class="text-center text-xl font-bold">{$t('database.no_databases_found')}</div>

View File

@ -58,7 +58,7 @@
</a> </a>
{/if} {/if}
</div> </div>
<div class="flex justify-center"> <div class="flex-col justify-center">
{#if !destinations || ownDestinations.length === 0} {#if !destinations || ownDestinations.length === 0}
<div class="flex-col"> <div class="flex-col">
<div class="text-center text-xl font-bold">{$t('destination.no_destination_found')}</div> <div class="text-center text-xl font-bold">{$t('destination.no_destination_found')}</div>

View File

@ -140,7 +140,6 @@
{#if $session.teamId === '0'} {#if $session.teamId === '0'}
<div class="px-6 text-2xl font-bold">Server Usage</div> <div class="px-6 text-2xl font-bold">Server Usage</div>
<dl class="relative mt-5 grid grid-cols-1 gap-5 sm:grid-cols-3"> <dl class="relative mt-5 grid grid-cols-1 gap-5 sm:grid-cols-3">
<Loading />
<div class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left"> <div class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left">
<dt class="truncate text-sm font-medium text-white">Total Memory</dt> <dt class="truncate text-sm font-medium text-white">Total Memory</dt>
<dd class="mt-1 text-3xl font-semibold text-white"> <dd class="mt-1 text-3xl font-semibold text-white">
@ -175,12 +174,6 @@
{usage?.cpu.count} {usage?.cpu.count}
</dd> </dd>
</div> </div>
<div class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left">
<dt class="truncate text-sm font-medium text-white">Load Average (5/10/30mins)</dt>
<dd class="mt-1 text-3xl font-semibold text-white">
{usage?.cpu.load.join('/')}
</dd>
</div>
<div <div
class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left" class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left"
class:bg-red-500={cpuWarning} class:bg-red-500={cpuWarning}
@ -193,6 +186,12 @@
{/if} {/if}
</dd> </dd>
</div> </div>
<div class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left">
<dt class="truncate text-sm font-medium text-white">Load Average (5/10/30mins)</dt>
<dd class="mt-1 text-3xl font-semibold text-white">
{usage?.cpu.load.join('/')}
</dd>
</div>
</dl> </dl>
<dl class="relative mt-5 grid grid-cols-1 gap-5 sm:grid-cols-3"> <dl class="relative mt-5 grid grid-cols-1 gap-5 sm:grid-cols-3">
<div class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left"> <div class="overflow-hidden rounded px-4 py-5 text-center sm:p-6 sm:text-left">
@ -255,7 +254,7 @@
</dd> </dd>
</a> </a>
</dl> </dl>
<dl class="mt-5 grid grid-cols-1 gap-5 sm:grid-cols-3"> <dl class="mt-5 grid grid-cols-1 gap-5 px-2 sm:grid-cols-3">
<a <a
href="/databases" href="/databases"
sveltekit:prefetch sveltekit:prefetch

View File

@ -175,8 +175,8 @@ define('SUBDOMAIN_INSTALL', false);`
id="mysqlRootUser" id="mysqlRootUser"
placeholder="MySQL {$t('forms.root_user')}" placeholder="MySQL {$t('forms.root_user')}"
value={service.wordpress.mysqlRootUser} value={service.wordpress.mysqlRootUser}
readonly={isRunning || !service.wordpress.ownMysq} readonly={isRunning || !service.wordpress.ownMysql}
disabled={isRunning || !service.wordpress.ownMysq} disabled={isRunning || !service.wordpress.ownMysql}
/> />
</div> </div>
<div class="grid grid-cols-2 items-center px-10"> <div class="grid grid-cols-2 items-center px-10">
@ -184,8 +184,8 @@ define('SUBDOMAIN_INSTALL', false);`
<CopyPasswordField <CopyPasswordField
id="mysqlRootUserPassword" id="mysqlRootUserPassword"
isPasswordField isPasswordField
readonly={isRunning || !service.wordpress.ownMysq} readonly={isRunning || !service.wordpress.ownMysql}
disabled={isRunning || !service.wordpress.ownMysq} disabled={isRunning || !service.wordpress.ownMysql}
name="mysqlRootUserPassword" name="mysqlRootUserPassword"
value={service.wordpress.mysqlRootUserPassword} value={service.wordpress.mysqlRootUserPassword}
/> />
@ -196,7 +196,7 @@ define('SUBDOMAIN_INSTALL', false);`
<input <input
name="mysqlUser" name="mysqlUser"
id="mysqlUser" id="mysqlUser"
value={service.wordpress.mysqlUser} bind:value={service.wordpress.mysqlUser}
readonly={isRunning || !service.wordpress.ownMysql} readonly={isRunning || !service.wordpress.ownMysql}
disabled={isRunning || !service.wordpress.ownMysql} disabled={isRunning || !service.wordpress.ownMysql}
/> />
@ -209,6 +209,6 @@ define('SUBDOMAIN_INSTALL', false);`
readonly={isRunning || !service.wordpress.ownMysql} readonly={isRunning || !service.wordpress.ownMysql}
disabled={isRunning || !service.wordpress.ownMysql} disabled={isRunning || !service.wordpress.ownMysql}
name="mysqlPassword" name="mysqlPassword"
value={service.wordpress.mysqlPassword} bind:value={service.wordpress.mysqlPassword}
/> />
</div> </div>

View File

@ -12,23 +12,25 @@ export const post: RequestHandler = async (event) => {
name, name,
fqdn, fqdn,
exposePort, exposePort,
wordpress: { extraConfig, mysqlDatabase, mysqlHost, mysqlPort } ownMysql,
wordpress: { extraConfig, mysqlDatabase, mysqlHost, mysqlPort, mysqlUser, mysqlPassword }
} = await event.request.json(); } = await event.request.json();
if (fqdn) fqdn = fqdn.toLowerCase(); if (fqdn) fqdn = fqdn.toLowerCase();
if (exposePort) exposePort = Number(exposePort); if (exposePort) exposePort = Number(exposePort);
if (mysqlPort) mysqlPort = Number(mysqlPort); if (mysqlPort) mysqlPort = Number(mysqlPort);
try { try {
await db.updateWordpress({ await db.updateWordpress({
id, id,
fqdn, fqdn,
name, name,
extraConfig, extraConfig,
ownMysql,
mysqlDatabase, mysqlDatabase,
exposePort, exposePort,
mysqlHost, mysqlHost,
mysqlPort mysqlPort,
mysqlUser,
mysqlPassword
}); });
return { status: 201 }; return { status: 201 };
} catch (error) { } catch (error) {

View File

@ -55,7 +55,7 @@
</div> </div>
</div> </div>
<div class="flex justify-center"> <div class="flex-col justify-center">
{#if !services || ownServices.length === 0} {#if !services || ownServices.length === 0}
<div class="flex-col"> <div class="flex-col">
<div class="text-center text-xl font-bold">{$t('service.no_service')}</div> <div class="text-center text-xl font-bold">{$t('service.no_service')}</div>

View File

@ -62,7 +62,7 @@
</button> </button>
{/if} {/if}
</div> </div>
<div class="flex justify-center"> <div class="flex-col justify-center">
{#if !sources || ownSources.length === 0} {#if !sources || ownSources.length === 0}
<div class="flex-col"> <div class="flex-col">
<div class="text-center text-xl font-bold">{$t('source.no_git_sources_found')}</div> <div class="text-center text-xl font-bold">{$t('source.no_git_sources_found')}</div>