From d8d0b60cb3882e4d6dedc849c8ce525b250e04b4 Mon Sep 17 00:00:00 2001
From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Date: Mon, 16 Sep 2024 00:40:11 -0600
Subject: [PATCH] refactor(multi-server): replace executeCommand with
execAsyncRemote
---
.../dashboard/compose/monitoring/show.tsx | 3 +-
.../monitoring/docker/docker-memory-chart.tsx | 2 +-
.../dashboard/monitoring/docker/show.tsx | 12 +-
.../dashboard/project/add-application.tsx | 50 +-
.../dashboard/project/add-compose.tsx | 35 +-
.../dashboard/project/add-database.tsx | 18 +-
.../components/dashboard/projects/add.tsx | 6 -
.../dashboard/settings/servers/add-server.tsx | 18 +-
.../settings/servers/setup-server.tsx | 20 +-
.../settings/servers/show-servers.tsx | 16 +-
.../dashboard/settings/web-server.tsx | 2 +-
apps/dokploy/drizzle/0037_quick_callisto.sql | 81 +
.../drizzle/0037_small_adam_warlock.sql | 18 -
.../dokploy/drizzle/0038_thankful_magneto.sql | 6 -
.../drizzle/0039_military_doctor_faustus.sql | 8 -
.../dokploy/drizzle/0040_bent_santa_claus.sql | 13 -
apps/dokploy/drizzle/0041_mute_polaris.sql | 1 -
.../drizzle/0042_wandering_inhumans.sql | 34 -
apps/dokploy/drizzle/meta/0037_snapshot.json | 192 +-
apps/dokploy/drizzle/meta/0038_snapshot.json | 3672 ----------------
apps/dokploy/drizzle/meta/0039_snapshot.json | 3683 ----------------
apps/dokploy/drizzle/meta/0040_snapshot.json | 3721 ----------------
apps/dokploy/drizzle/meta/0041_snapshot.json | 3728 ----------------
apps/dokploy/drizzle/meta/0042_snapshot.json | 3823 -----------------
apps/dokploy/drizzle/meta/_journal.json | 39 +-
.../services/application/[applicationId].tsx | 5 +-
apps/dokploy/server/api/root.ts | 2 +-
.../dokploy/server/api/routers/application.ts | 4 +-
apps/dokploy/server/api/routers/auth.ts | 2 +-
apps/dokploy/server/api/routers/compose.ts | 1 -
apps/dokploy/server/api/routers/domain.ts | 5 +-
apps/dokploy/server/api/routers/server.ts | 6 +-
.../server/api/services/application.ts | 82 +-
apps/dokploy/server/api/services/compose.ts | 4 +-
.../dokploy/server/api/services/deployment.ts | 8 +-
apps/dokploy/server/api/services/mariadb.ts | 5 +-
apps/dokploy/server/api/services/mongo.ts | 5 +-
apps/dokploy/server/api/services/mount.ts | 2 +-
apps/dokploy/server/api/services/mysql.ts | 5 +-
apps/dokploy/server/api/services/postgres.ts | 5 +-
apps/dokploy/server/api/services/redis.ts | 5 +-
apps/dokploy/server/auth/auth.ts | 4 +-
apps/dokploy/server/auth/token.ts | 1 +
apps/dokploy/server/constants/index.ts | 19 +-
apps/dokploy/server/db/schema/mariadb.ts | 2 +-
apps/dokploy/server/db/schema/mongo.ts | 2 +-
apps/dokploy/server/db/schema/mysql.ts | 2 +-
apps/dokploy/server/db/schema/postgres.ts | 2 +-
apps/dokploy/server/db/schema/redis.ts | 2 +-
apps/dokploy/server/db/schema/server.ts | 8 +-
apps/dokploy/server/monitoring/utilts.ts | 153 +-
apps/dokploy/server/queues/queueSetup.ts | 28 +-
apps/dokploy/server/server.ts | 26 +-
apps/dokploy/server/setup/config-paths.ts | 1 -
apps/dokploy/server/utils/builders/compose.ts | 2 +-
apps/dokploy/server/utils/builders/drop.ts | 8 +-
apps/dokploy/server/utils/builders/index.ts | 6 +-
apps/dokploy/server/utils/docker/domain.ts | 2 +-
.../dokploy/server/utils/process/execAsync.ts | 30 +-
.../server/utils/providers/bitbucket.ts | 2 +-
apps/dokploy/server/utils/providers/git.ts | 2 +-
apps/dokploy/server/utils/providers/github.ts | 5 +-
apps/dokploy/server/utils/providers/gitlab.ts | 3 +-
apps/dokploy/server/utils/providers/raw.ts | 2 +-
apps/dokploy/server/utils/servers/command.ts | 10 -
.../server/utils/servers/remote-docker.ts | 4 +-
.../server/utils/servers/setup-server.ts | 27 +-
.../server/utils/traefik/application.ts | 2 +-
.../server/utils/traefik/middleware.ts | 2 +-
apps/dokploy/server/utils/traefik/redirect.ts | 2 +-
apps/dokploy/server/utils/traefik/security.ts | 2 +-
.../server/wss/docker-container-logs.ts | 6 +-
apps/dokploy/server/wss/docker-stats.ts | 7 +-
apps/dokploy/server/wss/listen-deployment.ts | 14 +-
apps/dokploy/server/wss/terminal.ts | 4 +-
apps/dokploy/templates/utils/index.ts | 6 +-
76 files changed, 622 insertions(+), 19123 deletions(-)
create mode 100644 apps/dokploy/drizzle/0037_quick_callisto.sql
delete mode 100644 apps/dokploy/drizzle/0037_small_adam_warlock.sql
delete mode 100644 apps/dokploy/drizzle/0038_thankful_magneto.sql
delete mode 100644 apps/dokploy/drizzle/0039_military_doctor_faustus.sql
delete mode 100644 apps/dokploy/drizzle/0040_bent_santa_claus.sql
delete mode 100644 apps/dokploy/drizzle/0041_mute_polaris.sql
delete mode 100644 apps/dokploy/drizzle/0042_wandering_inhumans.sql
delete mode 100644 apps/dokploy/drizzle/meta/0038_snapshot.json
delete mode 100644 apps/dokploy/drizzle/meta/0039_snapshot.json
delete mode 100644 apps/dokploy/drizzle/meta/0040_snapshot.json
delete mode 100644 apps/dokploy/drizzle/meta/0041_snapshot.json
delete mode 100644 apps/dokploy/drizzle/meta/0042_snapshot.json
delete mode 100644 apps/dokploy/server/utils/servers/command.ts
diff --git a/apps/dokploy/components/dashboard/compose/monitoring/show.tsx b/apps/dokploy/components/dashboard/compose/monitoring/show.tsx
index d5cdca14..898af8ec 100644
--- a/apps/dokploy/components/dashboard/compose/monitoring/show.tsx
+++ b/apps/dokploy/components/dashboard/compose/monitoring/show.tsx
@@ -17,10 +17,10 @@ import {
SelectValue,
} from "@/components/ui/select";
import { api } from "@/utils/api";
+import { Loader2 } from "lucide-react";
import { useEffect, useState } from "react";
import { toast } from "sonner";
import { DockerMonitoring } from "../../monitoring/docker/show";
-import { Loader2 } from "lucide-react";
interface Props {
appName: string;
@@ -119,7 +119,6 @@ export const ShowMonitoringCompose = ({
diff --git a/apps/dokploy/components/dashboard/monitoring/docker/docker-memory-chart.tsx b/apps/dokploy/components/dashboard/monitoring/docker/docker-memory-chart.tsx
index 78791ce1..36f1edb8 100644
--- a/apps/dokploy/components/dashboard/monitoring/docker/docker-memory-chart.tsx
+++ b/apps/dokploy/components/dashboard/monitoring/docker/docker-memory-chart.tsx
@@ -23,7 +23,7 @@ export const DockerMemoryChart = ({
return {
time: item.time,
name: `Point ${index + 1}`,
- usage: (item.value.used / 1024).toFixed(2),
+ usage: (item.value.used / 1024 ** 3).toFixed(2),
};
});
return (
diff --git a/apps/dokploy/components/dashboard/monitoring/docker/show.tsx b/apps/dokploy/components/dashboard/monitoring/docker/show.tsx
index c54e7c0c..8ed6d0b1 100644
--- a/apps/dokploy/components/dashboard/monitoring/docker/show.tsx
+++ b/apps/dokploy/components/dashboard/monitoring/docker/show.tsx
@@ -150,6 +150,8 @@ export const DockerMonitoring = ({
});
}, [data]);
+ console.log(currentData);
+
useEffect(() => {
const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
const wsUrl = `${protocol}//${window.location.host}/listen-docker-stats-monitoring?appName=${appName}&appType=${appType}`;
@@ -208,9 +210,7 @@ export const DockerMonitoring = ({
Memory
- {`Used: ${(currentData.memory.value.used / 1024).toFixed(
- 2,
- )} GB / Limit: ${(currentData.memory.value.total / 1024).toFixed(2)} GB`}
+ {`Used: ${(currentData.memory.value.used / 1024 ** 3).toFixed(2)} GB / Limit: ${(currentData.memory.value.total / 1024 ** 3).toFixed(2)} GB`}
{appName === "dokploy" && (
@@ -240,9 +240,9 @@ export const DockerMonitoring = ({
Block I/O
- {`Used: ${currentData.block.value.readMb.toFixed(
+ {`Read: ${currentData.block.value.readMb.toFixed(
2,
- )} MB / Limit: ${currentData.block.value.writeMb.toFixed(
+ )} MB / Write: ${currentData.block.value.writeMb.toFixed(
3,
)} MB`}
diff --git a/apps/dokploy/components/dashboard/project/add-application.tsx b/apps/dokploy/components/dashboard/project/add-application.tsx
index 69a256a4..3ab9f9ae 100644
--- a/apps/dokploy/components/dashboard/project/add-application.tsx
+++ b/apps/dokploy/components/dashboard/project/add-application.tsx
@@ -19,15 +19,6 @@ import {
FormMessage,
} from "@/components/ui/form";
import { Input } from "@/components/ui/input";
-import { Textarea } from "@/components/ui/textarea";
-import { slugify } from "@/lib/slug";
-import { api } from "@/utils/api";
-import { zodResolver } from "@hookform/resolvers/zod";
-import { Folder } from "lucide-react";
-import { useState } from "react";
-import { useForm } from "react-hook-form";
-import { toast } from "sonner";
-import { z } from "zod";
import {
Select,
SelectContent,
@@ -37,6 +28,21 @@ import {
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
+import { Textarea } from "@/components/ui/textarea";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from "@/components/ui/tooltip";
+import { slugify } from "@/lib/slug";
+import { api } from "@/utils/api";
+import { zodResolver } from "@hookform/resolvers/zod";
+import { Folder, HelpCircle } from "lucide-react";
+import { useState } from "react";
+import { useForm } from "react-hook-form";
+import { toast } from "sonner";
+import { z } from "zod";
const AddTemplateSchema = z.object({
name: z.string().min(1, {
@@ -52,9 +58,7 @@ const AddTemplateSchema = z.object({
"App name supports lowercase letters, numbers, '-' and can only start and end letters, and does not support continuous '-'",
}),
description: z.string().optional(),
- serverId: z.string().min(1, {
- message: "Server is required",
- }),
+ serverId: z.string().optional(),
});
type AddTemplate = z.infer
;
@@ -155,7 +159,27 @@ export const AddApplication = ({ projectId, projectName }: Props) => {
name="serverId"
render={({ field }) => (
- Select a Server
+
+
+
+
+ Select a Server (Optional)
+
+
+
+
+
+ If not server is selected, the application will be
+ deployed on the server where the user is logged in.
+
+
+
+
+