mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
* feat: add schema for registry and routes * feat: add docker registry upload * feat: add show cluster * refactor: set the registry url in image in case we have a registry asociated * feat: add update registry and fix the docker url markup * chore: remove --advertise-ip on swarm script * refactor: remove listen address of swarm initialize * feat: add table to show nodes and add dropdown to add manager & workers * refactor: improve interface for cluster * refactor: improve UI * feat: add experimental swarm settings * refactor: remove comments * refactor: prettify json of each setting * refactor: add interface tooltip * refactor: delete static form self registry * refactor: allow to se a empty registry * fix: remove text area warnings * feat: add network swarm json * refactor: update ui * revert: go back to swarm init config * refactor: remove initialization on server, only on setup script * Update LICENSE.MD * feat: appearance theme support system config * refactor: remove logs * fix(README-ru): hyperlink-ed docs url * feat: (#107) webhook listener filter docker events based on image tag. Fixes #107 * refactor: simplify comparison docker tags * refactor: remove return in res status * refactor: prevent to updates download automatically * feat: support code editor (#105) * feat: support code editor * Update codeblock * refactor: remove unused class --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: select the right image from sourcetype (#109) * chore: bump minor version --------- Co-authored-by: hehehai <riverhohai@gmail.com> Co-authored-by: Bayram Tagiev <bayram.tagiev.a@gmail.com> Co-authored-by: Paulo Santana <30875229+hikinine@users.noreply.github.com>
67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import {
|
|
Dialog,
|
|
DialogContent,
|
|
DialogDescription,
|
|
DialogHeader,
|
|
DialogTitle,
|
|
DialogTrigger,
|
|
} from "@/components/ui/dialog";
|
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
|
import { Button } from "@/components/ui/button";
|
|
import { ExternalLink, PlusIcon } from "lucide-react";
|
|
import { AddWorker } from "./workers/add-worker";
|
|
import { AddManager } from "./manager/add-manager";
|
|
import Link from "next/link";
|
|
|
|
export const AddNode = () => {
|
|
return (
|
|
<Dialog>
|
|
<DialogTrigger asChild>
|
|
<Button className="w-full cursor-pointer space-x-3">
|
|
<PlusIcon className="h-4 w-4" />
|
|
Add Node
|
|
</Button>
|
|
</DialogTrigger>
|
|
<DialogContent className="max-h-screen overflow-y-auto sm:max-w-4xl">
|
|
<DialogHeader>
|
|
<DialogTitle>Add Node</DialogTitle>
|
|
<DialogDescription className="flex flex-col gap-2">
|
|
Follow the steps to add a new node to your cluster, before you start
|
|
using this feature, you need to understand how docker swarm works.{" "}
|
|
<Link
|
|
href="https://docs.docker.com/engine/swarm/"
|
|
target="_blank"
|
|
className="text-primary flex flex-row gap-2 items-center"
|
|
>
|
|
Docker Swarm
|
|
<ExternalLink className="h-4 w-4" />
|
|
</Link>
|
|
<Link
|
|
href="https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/"
|
|
target="_blank"
|
|
className="text-primary flex flex-row gap-2 items-center"
|
|
>
|
|
Architecture
|
|
<ExternalLink className="h-4 w-4" />
|
|
</Link>
|
|
</DialogDescription>
|
|
</DialogHeader>
|
|
<div className="flex flex-col gap-2">
|
|
<Tabs defaultValue="worker">
|
|
<TabsList>
|
|
<TabsTrigger value="worker">Worker</TabsTrigger>
|
|
<TabsTrigger value="manager">Manager</TabsTrigger>
|
|
</TabsList>
|
|
<TabsContent value="worker" className="pt-4">
|
|
<AddWorker />
|
|
</TabsContent>
|
|
<TabsContent value="manager" className="pt-4">
|
|
<AddManager />
|
|
</TabsContent>
|
|
</Tabs>
|
|
</div>
|
|
</DialogContent>
|
|
</Dialog>
|
|
);
|
|
};
|