mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
Merge branch 'canary' into canary
This commit is contained in:
@@ -14,7 +14,7 @@ import { useForm } from "react-hook-form";
|
|||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { validateAndFormatYAML } from "../../application/advanced/traefik/update-traefik-config";
|
import { validateAndFormatYAML } from "../../application/advanced/traefik/update-traefik-config";
|
||||||
import { RandomizeCompose } from "./randomize-compose";
|
import { ShowUtilities } from "./show-utilities";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
composeId: string;
|
composeId: string;
|
||||||
@@ -125,7 +125,7 @@ services:
|
|||||||
</Form>
|
</Form>
|
||||||
<div className="flex justify-between flex-col lg:flex-row gap-2">
|
<div className="flex justify-between flex-col lg:flex-row gap-2">
|
||||||
<div className="w-full flex flex-col lg:flex-row gap-4 items-end">
|
<div className="w-full flex flex-col lg:flex-row gap-4 items-end">
|
||||||
<RandomizeCompose composeId={composeId} />
|
<ShowUtilities composeId={composeId} />
|
||||||
</div>
|
</div>
|
||||||
<Button
|
<Button
|
||||||
type="submit"
|
type="submit"
|
||||||
|
|||||||
@@ -0,0 +1,191 @@
|
|||||||
|
import { AlertBlock } from "@/components/shared/alert-block";
|
||||||
|
import { CodeEditor } from "@/components/shared/code-editor";
|
||||||
|
import { Button } from "@/components/ui/button";
|
||||||
|
import {
|
||||||
|
DialogDescription,
|
||||||
|
DialogHeader,
|
||||||
|
DialogTitle,
|
||||||
|
} from "@/components/ui/dialog";
|
||||||
|
import {
|
||||||
|
Form,
|
||||||
|
FormControl,
|
||||||
|
FormDescription,
|
||||||
|
FormField,
|
||||||
|
FormItem,
|
||||||
|
FormLabel,
|
||||||
|
} from "@/components/ui/form";
|
||||||
|
import { Label } from "@/components/ui/label";
|
||||||
|
import { Switch } from "@/components/ui/switch";
|
||||||
|
import { api } from "@/utils/api";
|
||||||
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
|
import { AlertTriangle } from "lucide-react";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import { useForm } from "react-hook-form";
|
||||||
|
import { toast } from "sonner";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
composeId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const schema = z.object({
|
||||||
|
isolatedDeployment: z.boolean().optional(),
|
||||||
|
});
|
||||||
|
|
||||||
|
type Schema = z.infer<typeof schema>;
|
||||||
|
|
||||||
|
export const IsolatedDeployment = ({ composeId }: Props) => {
|
||||||
|
const utils = api.useUtils();
|
||||||
|
const [compose, setCompose] = useState<string>("");
|
||||||
|
const { mutateAsync, error, isError } =
|
||||||
|
api.compose.isolatedDeployment.useMutation();
|
||||||
|
|
||||||
|
const { mutateAsync: updateCompose } = api.compose.update.useMutation();
|
||||||
|
|
||||||
|
const { data, refetch } = api.compose.one.useQuery(
|
||||||
|
{ composeId },
|
||||||
|
{ enabled: !!composeId },
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
const form = useForm<Schema>({
|
||||||
|
defaultValues: {
|
||||||
|
isolatedDeployment: false,
|
||||||
|
},
|
||||||
|
resolver: zodResolver(schema),
|
||||||
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
randomizeCompose();
|
||||||
|
if (data) {
|
||||||
|
form.reset({
|
||||||
|
isolatedDeployment: data?.isolatedDeployment || false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [form, form.reset, form.formState.isSubmitSuccessful, data]);
|
||||||
|
|
||||||
|
const onSubmit = async (formData: Schema) => {
|
||||||
|
await updateCompose({
|
||||||
|
composeId,
|
||||||
|
isolatedDeployment: formData?.isolatedDeployment || false,
|
||||||
|
})
|
||||||
|
.then(async (data) => {
|
||||||
|
randomizeCompose();
|
||||||
|
refetch();
|
||||||
|
toast.success("Compose updated");
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
toast.error("Error updating the compose");
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const randomizeCompose = async () => {
|
||||||
|
await mutateAsync({
|
||||||
|
composeId,
|
||||||
|
suffix: data?.appName || "",
|
||||||
|
})
|
||||||
|
.then(async (data) => {
|
||||||
|
await utils.project.all.invalidate();
|
||||||
|
setCompose(data);
|
||||||
|
toast.success("Compose Isolated");
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
toast.error("Error isolating the compose");
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle>Isolate Deployment</DialogTitle>
|
||||||
|
<DialogDescription>
|
||||||
|
Use this option to isolate the deployment of this compose file.
|
||||||
|
</DialogDescription>
|
||||||
|
</DialogHeader>
|
||||||
|
<div className="text-sm text-muted-foreground flex flex-col gap-2">
|
||||||
|
<span>
|
||||||
|
This feature creates an isolated environment for your deployment by
|
||||||
|
adding unique prefixes to all resources. It establishes a dedicated
|
||||||
|
network based on your compose file's name, ensuring your services run
|
||||||
|
in isolation. This prevents conflicts when running multiple instances
|
||||||
|
of the same template or services with identical names.
|
||||||
|
</span>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<div>
|
||||||
|
<h4 className="font-medium mb-2">
|
||||||
|
Resources that will be isolated:
|
||||||
|
</h4>
|
||||||
|
<ul className="list-disc list-inside">
|
||||||
|
<li>Docker volumes</li>
|
||||||
|
<li>Docker networks</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{isError && <AlertBlock type="error">{error?.message}</AlertBlock>}
|
||||||
|
<Form {...form}>
|
||||||
|
<form
|
||||||
|
onSubmit={form.handleSubmit(onSubmit)}
|
||||||
|
id="hook-form-add-project"
|
||||||
|
className="grid w-full gap-4"
|
||||||
|
>
|
||||||
|
{isError && (
|
||||||
|
<div className="flex flex-row gap-4 rounded-lg items-center bg-red-50 p-2 dark:bg-red-950">
|
||||||
|
<AlertTriangle className="text-red-600 dark:text-red-400" />
|
||||||
|
<span className="text-sm text-red-600 dark:text-red-400">
|
||||||
|
{error?.message}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<div className="flex flex-col lg:flex-col gap-4 w-full ">
|
||||||
|
<div>
|
||||||
|
<FormField
|
||||||
|
control={form.control}
|
||||||
|
name="isolatedDeployment"
|
||||||
|
render={({ field }) => (
|
||||||
|
<FormItem className="mt-4 flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm">
|
||||||
|
<div className="space-y-0.5">
|
||||||
|
<FormLabel>Enable Randomize ({data?.appName})</FormLabel>
|
||||||
|
<FormDescription>
|
||||||
|
Enable randomize to the compose file.
|
||||||
|
</FormDescription>
|
||||||
|
</div>
|
||||||
|
<FormControl>
|
||||||
|
<Switch
|
||||||
|
checked={field.value}
|
||||||
|
onCheckedChange={field.onChange}
|
||||||
|
/>
|
||||||
|
</FormControl>
|
||||||
|
</FormItem>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex flex-col lg:flex-row gap-4 w-full items-end justify-end">
|
||||||
|
<Button
|
||||||
|
form="hook-form-add-project"
|
||||||
|
type="submit"
|
||||||
|
className="lg:w-fit"
|
||||||
|
>
|
||||||
|
Save
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-4">
|
||||||
|
<Label>Preview</Label>
|
||||||
|
<pre>
|
||||||
|
<CodeEditor
|
||||||
|
value={compose || ""}
|
||||||
|
language="yaml"
|
||||||
|
readOnly
|
||||||
|
height="50rem"
|
||||||
|
/>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</Form>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
@@ -1,14 +1,10 @@
|
|||||||
import { AlertBlock } from "@/components/shared/alert-block";
|
import { AlertBlock } from "@/components/shared/alert-block";
|
||||||
import { CodeEditor } from "@/components/shared/code-editor";
|
import { CodeEditor } from "@/components/shared/code-editor";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { CardTitle } from "@/components/ui/card";
|
|
||||||
import {
|
import {
|
||||||
Dialog,
|
|
||||||
DialogContent,
|
|
||||||
DialogDescription,
|
DialogDescription,
|
||||||
DialogHeader,
|
DialogHeader,
|
||||||
DialogTitle,
|
DialogTitle,
|
||||||
DialogTrigger,
|
|
||||||
} from "@/components/ui/dialog";
|
} from "@/components/ui/dialog";
|
||||||
import {
|
import {
|
||||||
Form,
|
Form,
|
||||||
@@ -20,11 +16,6 @@ import {
|
|||||||
FormMessage,
|
FormMessage,
|
||||||
} from "@/components/ui/form";
|
} from "@/components/ui/form";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import {
|
|
||||||
InputOTP,
|
|
||||||
InputOTPGroup,
|
|
||||||
InputOTPSlot,
|
|
||||||
} from "@/components/ui/input-otp";
|
|
||||||
import { Switch } from "@/components/ui/switch";
|
import { Switch } from "@/components/ui/switch";
|
||||||
import { api } from "@/utils/api";
|
import { api } from "@/utils/api";
|
||||||
import { zodResolver } from "@hookform/resolvers/zod";
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
@@ -70,6 +61,7 @@ export const RandomizeCompose = ({ composeId }: Props) => {
|
|||||||
const suffix = form.watch("suffix");
|
const suffix = form.watch("suffix");
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
randomizeCompose();
|
||||||
if (data) {
|
if (data) {
|
||||||
form.reset({
|
form.reset({
|
||||||
suffix: data?.suffix || "",
|
suffix: data?.suffix || "",
|
||||||
@@ -110,126 +102,117 @@ export const RandomizeCompose = ({ composeId }: Props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
<div className="w-full">
|
||||||
<DialogTrigger asChild onClick={() => randomizeCompose()}>
|
<DialogHeader>
|
||||||
<Button className="max-lg:w-full" variant="outline">
|
<DialogTitle>Randomize Compose (Experimental)</DialogTitle>
|
||||||
<Dices className="h-4 w-4" />
|
<DialogDescription>
|
||||||
Randomize Compose
|
Use this in case you want to deploy the same compose file and you have
|
||||||
</Button>
|
conflicts with some property like volumes, networks, etc.
|
||||||
</DialogTrigger>
|
</DialogDescription>
|
||||||
<DialogContent className="sm:max-w-6xl max-h-[50rem] overflow-y-auto">
|
</DialogHeader>
|
||||||
<DialogHeader>
|
<div className="text-sm text-muted-foreground flex flex-col gap-2">
|
||||||
<DialogTitle>Randomize Compose (Experimental)</DialogTitle>
|
<span>
|
||||||
<DialogDescription>
|
This will randomize the compose file and will add a suffix to the
|
||||||
Use this in case you want to deploy the same compose file and you
|
property to avoid conflicts
|
||||||
have conflicts with some property like volumes, networks, etc.
|
</span>
|
||||||
</DialogDescription>
|
<ul className="list-disc list-inside">
|
||||||
</DialogHeader>
|
<li>volumes</li>
|
||||||
<div className="text-sm text-muted-foreground flex flex-col gap-2">
|
<li>networks</li>
|
||||||
<span>
|
<li>services</li>
|
||||||
This will randomize the compose file and will add a suffix to the
|
<li>configs</li>
|
||||||
property to avoid conflicts
|
<li>secrets</li>
|
||||||
</span>
|
</ul>
|
||||||
<ul className="list-disc list-inside">
|
<AlertBlock type="info">
|
||||||
<li>volumes</li>
|
When you activate this option, we will include a env `COMPOSE_PREFIX`
|
||||||
<li>networks</li>
|
variable to the compose file so you can use it in your compose file.
|
||||||
<li>services</li>
|
</AlertBlock>
|
||||||
<li>configs</li>
|
</div>
|
||||||
<li>secrets</li>
|
{isError && <AlertBlock type="error">{error?.message}</AlertBlock>}
|
||||||
</ul>
|
<Form {...form}>
|
||||||
<AlertBlock type="info">
|
<form
|
||||||
When you activate this option, we will include a env
|
onSubmit={form.handleSubmit(onSubmit)}
|
||||||
`COMPOSE_PREFIX` variable to the compose file so you can use it in
|
id="hook-form-add-project"
|
||||||
your compose file.
|
className="grid w-full gap-4"
|
||||||
</AlertBlock>
|
>
|
||||||
</div>
|
{isError && (
|
||||||
{isError && <AlertBlock type="error">{error?.message}</AlertBlock>}
|
<div className="flex flex-row gap-4 rounded-lg items-center bg-red-50 p-2 dark:bg-red-950">
|
||||||
<Form {...form}>
|
<AlertTriangle className="text-red-600 dark:text-red-400" />
|
||||||
<form
|
<span className="text-sm text-red-600 dark:text-red-400">
|
||||||
onSubmit={form.handleSubmit(onSubmit)}
|
{error?.message}
|
||||||
id="hook-form-add-project"
|
</span>
|
||||||
className="grid w-full gap-4"
|
|
||||||
>
|
|
||||||
{isError && (
|
|
||||||
<div className="flex flex-row gap-4 rounded-lg items-center bg-red-50 p-2 dark:bg-red-950">
|
|
||||||
<AlertTriangle className="text-red-600 dark:text-red-400" />
|
|
||||||
<span className="text-sm text-red-600 dark:text-red-400">
|
|
||||||
{error?.message}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<div className="flex flex-col lg:flex-col gap-4 w-full ">
|
|
||||||
<div>
|
|
||||||
<FormField
|
|
||||||
control={form.control}
|
|
||||||
name="suffix"
|
|
||||||
render={({ field }) => (
|
|
||||||
<FormItem className="flex flex-col justify-center max-sm:items-center w-full">
|
|
||||||
<FormLabel>Suffix</FormLabel>
|
|
||||||
<FormControl>
|
|
||||||
<Input
|
|
||||||
placeholder="Enter a suffix (Optional, example: prod)"
|
|
||||||
{...field}
|
|
||||||
/>
|
|
||||||
</FormControl>
|
|
||||||
<FormMessage />
|
|
||||||
</FormItem>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
<FormField
|
|
||||||
control={form.control}
|
|
||||||
name="randomize"
|
|
||||||
render={({ field }) => (
|
|
||||||
<FormItem className="mt-4 flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm">
|
|
||||||
<div className="space-y-0.5">
|
|
||||||
<FormLabel>Apply Randomize</FormLabel>
|
|
||||||
<FormDescription>
|
|
||||||
Apply randomize to the compose file.
|
|
||||||
</FormDescription>
|
|
||||||
</div>
|
|
||||||
<FormControl>
|
|
||||||
<Switch
|
|
||||||
checked={field.value}
|
|
||||||
onCheckedChange={field.onChange}
|
|
||||||
/>
|
|
||||||
</FormControl>
|
|
||||||
</FormItem>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="flex flex-col lg:flex-row gap-4 w-full items-end justify-end">
|
|
||||||
<Button
|
|
||||||
form="hook-form-add-project"
|
|
||||||
type="submit"
|
|
||||||
className="lg:w-fit"
|
|
||||||
>
|
|
||||||
Save
|
|
||||||
</Button>
|
|
||||||
<Button
|
|
||||||
type="button"
|
|
||||||
variant="secondary"
|
|
||||||
onClick={async () => {
|
|
||||||
await randomizeCompose();
|
|
||||||
}}
|
|
||||||
className="lg:w-fit"
|
|
||||||
>
|
|
||||||
Random
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<pre>
|
)}
|
||||||
<CodeEditor
|
|
||||||
value={compose || ""}
|
<div className="flex flex-col lg:flex-col gap-4 w-full ">
|
||||||
language="yaml"
|
<div>
|
||||||
readOnly
|
<FormField
|
||||||
height="50rem"
|
control={form.control}
|
||||||
|
name="suffix"
|
||||||
|
render={({ field }) => (
|
||||||
|
<FormItem className="flex flex-col justify-center max-sm:items-center w-full mt-4">
|
||||||
|
<FormLabel>Suffix</FormLabel>
|
||||||
|
<FormControl>
|
||||||
|
<Input
|
||||||
|
placeholder="Enter a suffix (Optional, example: prod)"
|
||||||
|
{...field}
|
||||||
|
/>
|
||||||
|
</FormControl>
|
||||||
|
<FormMessage />
|
||||||
|
</FormItem>
|
||||||
|
)}
|
||||||
/>
|
/>
|
||||||
</pre>
|
<FormField
|
||||||
</form>
|
control={form.control}
|
||||||
</Form>
|
name="randomize"
|
||||||
</DialogContent>
|
render={({ field }) => (
|
||||||
</Dialog>
|
<FormItem className="mt-4 flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm">
|
||||||
|
<div className="space-y-0.5">
|
||||||
|
<FormLabel>Apply Randomize</FormLabel>
|
||||||
|
<FormDescription>
|
||||||
|
Apply randomize to the compose file.
|
||||||
|
</FormDescription>
|
||||||
|
</div>
|
||||||
|
<FormControl>
|
||||||
|
<Switch
|
||||||
|
checked={field.value}
|
||||||
|
onCheckedChange={field.onChange}
|
||||||
|
/>
|
||||||
|
</FormControl>
|
||||||
|
</FormItem>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex flex-col lg:flex-row gap-4 w-full items-end justify-end">
|
||||||
|
<Button
|
||||||
|
form="hook-form-add-project"
|
||||||
|
type="submit"
|
||||||
|
className="lg:w-fit"
|
||||||
|
>
|
||||||
|
Save
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
variant="secondary"
|
||||||
|
onClick={async () => {
|
||||||
|
await randomizeCompose();
|
||||||
|
}}
|
||||||
|
className="lg:w-fit"
|
||||||
|
>
|
||||||
|
Random
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<pre>
|
||||||
|
<CodeEditor
|
||||||
|
value={compose || ""}
|
||||||
|
language="yaml"
|
||||||
|
readOnly
|
||||||
|
height="50rem"
|
||||||
|
/>
|
||||||
|
</pre>
|
||||||
|
</form>
|
||||||
|
</Form>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import { Button } from "@/components/ui/button";
|
||||||
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogContent,
|
||||||
|
DialogDescription,
|
||||||
|
DialogHeader,
|
||||||
|
DialogTitle,
|
||||||
|
DialogTrigger,
|
||||||
|
} from "@/components/ui/dialog";
|
||||||
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||||
|
import { useState } from "react";
|
||||||
|
import { IsolatedDeployment } from "./isolated-deployment";
|
||||||
|
import { RandomizeCompose } from "./randomize-compose";
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
composeId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const ShowUtilities = ({ composeId }: Props) => {
|
||||||
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
|
return (
|
||||||
|
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
||||||
|
<DialogTrigger asChild>
|
||||||
|
<Button variant="ghost">Show Utilities</Button>
|
||||||
|
</DialogTrigger>
|
||||||
|
<DialogContent className="max-h-screen overflow-y-auto sm:max-w-5xl">
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle>Utilities </DialogTitle>
|
||||||
|
<DialogDescription>Modify the application data</DialogDescription>
|
||||||
|
</DialogHeader>
|
||||||
|
<Tabs defaultValue="isolated">
|
||||||
|
<TabsList className="grid w-full grid-cols-2">
|
||||||
|
<TabsTrigger value="isolated">Isolated Deployment</TabsTrigger>
|
||||||
|
<TabsTrigger value="randomize">Randomize Compose</TabsTrigger>
|
||||||
|
</TabsList>
|
||||||
|
<TabsContent value="randomize" className="pt-5">
|
||||||
|
<RandomizeCompose composeId={composeId} />
|
||||||
|
</TabsContent>
|
||||||
|
<TabsContent value="isolated" className="pt-5">
|
||||||
|
<IsolatedDeployment composeId={composeId} />
|
||||||
|
</TabsContent>
|
||||||
|
</Tabs>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
|
);
|
||||||
|
};
|
||||||
1
apps/dokploy/drizzle/0064_previous_agent_brand.sql
Normal file
1
apps/dokploy/drizzle/0064_previous_agent_brand.sql
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE "compose" ADD COLUMN "deployable" boolean DEFAULT false NOT NULL;
|
||||||
1
apps/dokploy/drizzle/0065_daily_zaladane.sql
Normal file
1
apps/dokploy/drizzle/0065_daily_zaladane.sql
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE "compose" RENAME COLUMN "deployable" TO "isolatedDeployment";
|
||||||
4485
apps/dokploy/drizzle/meta/0064_snapshot.json
Normal file
4485
apps/dokploy/drizzle/meta/0064_snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
4485
apps/dokploy/drizzle/meta/0065_snapshot.json
Normal file
4485
apps/dokploy/drizzle/meta/0065_snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -449,6 +449,20 @@
|
|||||||
"when": 1738522845992,
|
"when": 1738522845992,
|
||||||
"tag": "0063_panoramic_dreadnoughts",
|
"tag": "0063_panoramic_dreadnoughts",
|
||||||
"breakpoints": true
|
"breakpoints": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idx": 64,
|
||||||
|
"version": "7",
|
||||||
|
"when": 1738564387043,
|
||||||
|
"tag": "0064_previous_agent_brand",
|
||||||
|
"breakpoints": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idx": 65,
|
||||||
|
"version": "7",
|
||||||
|
"when": 1739087857244,
|
||||||
|
"tag": "0065_daily_zaladane",
|
||||||
|
"breakpoints": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -46,6 +46,7 @@ import {
|
|||||||
findServerById,
|
findServerById,
|
||||||
loadServices,
|
loadServices,
|
||||||
randomizeComposeFile,
|
randomizeComposeFile,
|
||||||
|
randomizeIsolatedDeploymentComposeFile,
|
||||||
removeCompose,
|
removeCompose,
|
||||||
removeComposeDirectory,
|
removeComposeDirectory,
|
||||||
removeDeploymentsByComposeId,
|
removeDeploymentsByComposeId,
|
||||||
@@ -216,6 +217,21 @@ export const composeRouter = createTRPCRouter({
|
|||||||
}
|
}
|
||||||
return await randomizeComposeFile(input.composeId, input.suffix);
|
return await randomizeComposeFile(input.composeId, input.suffix);
|
||||||
}),
|
}),
|
||||||
|
isolatedDeployment: protectedProcedure
|
||||||
|
.input(apiRandomizeCompose)
|
||||||
|
.mutation(async ({ input, ctx }) => {
|
||||||
|
const compose = await findComposeById(input.composeId);
|
||||||
|
if (compose.project.adminId !== ctx.user.adminId) {
|
||||||
|
throw new TRPCError({
|
||||||
|
code: "UNAUTHORIZED",
|
||||||
|
message: "You are not authorized to randomize this compose",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return await randomizeIsolatedDeploymentComposeFile(
|
||||||
|
input.composeId,
|
||||||
|
input.suffix,
|
||||||
|
);
|
||||||
|
}),
|
||||||
getConvertedCompose: protectedProcedure
|
getConvertedCompose: protectedProcedure
|
||||||
.input(apiFindCompose)
|
.input(apiFindCompose)
|
||||||
.query(async ({ input, ctx }) => {
|
.query(async ({ input, ctx }) => {
|
||||||
@@ -399,6 +415,7 @@ export const composeRouter = createTRPCRouter({
|
|||||||
name: input.id,
|
name: input.id,
|
||||||
sourceType: "raw",
|
sourceType: "raw",
|
||||||
appName: `${projectName}-${generatePassword(6)}`,
|
appName: `${projectName}-${generatePassword(6)}`,
|
||||||
|
isolatedDeployment: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ctx.user.rol === "user") {
|
if (ctx.user.rol === "user") {
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ services:
|
|||||||
activepieces:
|
activepieces:
|
||||||
image: activepieces/activepieces:0.35.0
|
image: activepieces/activepieces:0.35.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -35,8 +34,7 @@ services:
|
|||||||
postgres:
|
postgres:
|
||||||
image: postgres:14
|
image: postgres:14
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: activepieces
|
POSTGRES_DB: activepieces
|
||||||
POSTGRES_PASSWORD: ${AP_POSTGRES_PASSWORD}
|
POSTGRES_PASSWORD: ${AP_POSTGRES_PASSWORD}
|
||||||
@@ -52,8 +50,7 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
image: redis:7
|
image: redis:7
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- redis_data:/data
|
- redis_data:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ services:
|
|||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- db-data:/var/lib/postgresql/data
|
- db-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: aptabase
|
POSTGRES_USER: aptabase
|
||||||
POSTGRES_PASSWORD: sTr0NGp4ssw0rd
|
POSTGRES_PASSWORD: sTr0NGp4ssw0rd
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U aptabase"]
|
test: ["CMD-SHELL", "pg_isready -U aptabase"]
|
||||||
interval: 10s
|
interval: 10s
|
||||||
@@ -27,8 +26,7 @@ services:
|
|||||||
nofile:
|
nofile:
|
||||||
soft: 262144
|
soft: 262144
|
||||||
hard: 262144
|
hard: 262144
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl -f http://localhost:8123 || exit 1"]
|
test: ["CMD-SHELL", "curl -f http://localhost:8123 || exit 1"]
|
||||||
interval: 10s
|
interval: 10s
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ services:
|
|||||||
apps:
|
apps:
|
||||||
image: budibase.docker.scarf.sh/budibase/apps:3.2.25
|
image: budibase.docker.scarf.sh/budibase/apps:3.2.25
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
SELF_HOSTED: 1
|
SELF_HOSTED: 1
|
||||||
LOG_LEVEL: info
|
LOG_LEVEL: info
|
||||||
@@ -43,8 +42,7 @@ services:
|
|||||||
worker:
|
worker:
|
||||||
image: budibase.docker.scarf.sh/budibase/worker:3.2.25
|
image: budibase.docker.scarf.sh/budibase/worker:3.2.25
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
SELF_HOSTED: 1
|
SELF_HOSTED: 1
|
||||||
LOG_LEVEL: info
|
LOG_LEVEL: info
|
||||||
@@ -83,8 +81,7 @@ services:
|
|||||||
minio:
|
minio:
|
||||||
image: minio/minio:RELEASE.2024-11-07T00-52-20Z
|
image: minio/minio:RELEASE.2024-11-07T00-52-20Z
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- 'minio_data:/data'
|
- 'minio_data:/data'
|
||||||
environment:
|
environment:
|
||||||
@@ -104,8 +101,7 @@ services:
|
|||||||
proxy:
|
proxy:
|
||||||
image: budibase/proxy:3.2.25
|
image: budibase/proxy:3.2.25
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND: 10
|
PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND: 10
|
||||||
PROXY_RATE_LIMIT_API_PER_SECOND: 20
|
PROXY_RATE_LIMIT_API_PER_SECOND: 20
|
||||||
@@ -137,8 +133,7 @@ services:
|
|||||||
couchdb:
|
couchdb:
|
||||||
image: budibase/couchdb:v3.3.3
|
image: budibase/couchdb:v3.3.3
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
COUCHDB_USER: budibase
|
COUCHDB_USER: budibase
|
||||||
COUCHDB_PASSWORD: ${BB_COUCHDB_PASSWORD}
|
COUCHDB_PASSWORD: ${BB_COUCHDB_PASSWORD}
|
||||||
@@ -157,8 +152,7 @@ services:
|
|||||||
- 'couchdb3_data:/opt/couchdb/data'
|
- 'couchdb3_data:/opt/couchdb/data'
|
||||||
redis:
|
redis:
|
||||||
image: redis:7.2-alpine
|
image: redis:7.2-alpine
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: 'redis-server --requirepass "${BB_REDIS_PASSWORD}"'
|
command: 'redis-server --requirepass "${BB_REDIS_PASSWORD}"'
|
||||||
volumes:
|
volumes:
|
||||||
@@ -176,8 +170,7 @@ services:
|
|||||||
start_period: 10s
|
start_period: 10s
|
||||||
watchtower:
|
watchtower:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: containrrr/watchtower:1.7.1
|
image: containrrr/watchtower:1.7.1
|
||||||
volumes:
|
volumes:
|
||||||
- '/var/run/docker.sock:/var/run/docker.sock'
|
- '/var/run/docker.sock:/var/run/docker.sock'
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- calcom-data:/var/lib/postgresql/data
|
- calcom-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -51,8 +51,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- chatwoot-postgres-data:/var/lib/postgresql/data
|
- chatwoot-postgres-data:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_DB=${POSTGRES_DATABASE}
|
- POSTGRES_DB=${POSTGRES_DATABASE}
|
||||||
- POSTGRES_USER=${POSTGRES_USERNAME}
|
- POSTGRES_USER=${POSTGRES_USERNAME}
|
||||||
@@ -63,8 +62,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- chatwoot-redis-data:/data
|
- chatwoot-redis-data:/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
dokploy-network:
|
dokploy-network:
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ services:
|
|||||||
- 443
|
- 443
|
||||||
depends_on:
|
depends_on:
|
||||||
- server
|
- server
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
server:
|
server:
|
||||||
image: bluewaveuptime/uptime_server:latest
|
image: bluewaveuptime/uptime_server:latest
|
||||||
restart: always
|
restart: always
|
||||||
@@ -22,8 +21,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- DB_CONNECTION_STRING=mongodb://mongodb:27017/uptime_db
|
- DB_CONNECTION_STRING=mongodb://mongodb:27017/uptime_db
|
||||||
- REDIS_HOST=redis
|
- REDIS_HOST=redis
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
# volumes:
|
# volumes:
|
||||||
# - /var/run/docker.sock:/var/run/docker.sock:ro
|
# - /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
redis:
|
redis:
|
||||||
@@ -33,8 +31,7 @@ services:
|
|||||||
- 6379
|
- 6379
|
||||||
volumes:
|
volumes:
|
||||||
- ../files/redis/data:/data
|
- ../files/redis/data:/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
mongodb:
|
mongodb:
|
||||||
image: bluewaveuptime/uptime_database_mongo:latest
|
image: bluewaveuptime/uptime_database_mongo:latest
|
||||||
restart: always
|
restart: always
|
||||||
@@ -43,5 +40,3 @@ services:
|
|||||||
command: ["mongod", "--quiet"]
|
command: ["mongod", "--quiet"]
|
||||||
ports:
|
ports:
|
||||||
- 27017
|
- 27017
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
coder:
|
coder:
|
||||||
image: ghcr.io/coder/coder:v2.15.3
|
image: ghcr.io/coder/coder:v2.15.3
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
group_add:
|
group_add:
|
||||||
@@ -17,8 +16,7 @@ services:
|
|||||||
|
|
||||||
db:
|
db:
|
||||||
image: postgres:17
|
image: postgres:17
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD
|
- POSTGRES_PASSWORD
|
||||||
- POSTGRES_USER
|
- POSTGRES_USER
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ services:
|
|||||||
image: postgis/postgis:13-master
|
image: postgis/postgis:13-master
|
||||||
volumes:
|
volumes:
|
||||||
- directus_database:/var/lib/postgresql/data
|
- directus_database:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: "directus"
|
POSTGRES_USER: "directus"
|
||||||
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
|
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
|
||||||
@@ -26,8 +25,7 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
start_interval: 5s
|
start_interval: 5s
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
directus:
|
directus:
|
||||||
image: directus/directus:11.0.2
|
image: directus/directus:11.0.2
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ services:
|
|||||||
tickets-postgres:
|
tickets-postgres:
|
||||||
image: mysql:8
|
image: mysql:8
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- tickets-mysql-data:/var/lib/mysql
|
- tickets-mysql-data:/var/lib/mysql
|
||||||
environment:
|
environment:
|
||||||
@@ -25,8 +24,7 @@ services:
|
|||||||
tickets-postgres:
|
tickets-postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- tickets-app-data:/home/container/user
|
- tickets-app-data:/home/container/user
|
||||||
- /etc/timezone:/etc/timezone:ro
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ version: '3.7'
|
|||||||
services:
|
services:
|
||||||
discourse-db:
|
discourse-db:
|
||||||
image: docker.io/bitnami/postgresql:17
|
image: docker.io/bitnami/postgresql:17
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- discourse-postgresql-data:/bitnami/postgresql
|
- discourse-postgresql-data:/bitnami/postgresql
|
||||||
environment:
|
environment:
|
||||||
@@ -20,8 +19,7 @@ services:
|
|||||||
|
|
||||||
discourse-redis:
|
discourse-redis:
|
||||||
image: docker.io/bitnami/redis:7.4
|
image: docker.io/bitnami/redis:7.4
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- discourse-redis-data:/bitnami/redis
|
- discourse-redis-data:/bitnami/redis
|
||||||
environment:
|
environment:
|
||||||
@@ -35,8 +33,7 @@ services:
|
|||||||
|
|
||||||
discourse-app:
|
discourse-app:
|
||||||
image: docker.io/bitnami/discourse:3.3.2
|
image: docker.io/bitnami/discourse:3.3.2
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- discourse-data:/bitnami/discourse
|
- discourse-data:/bitnami/discourse
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -63,8 +60,7 @@ services:
|
|||||||
|
|
||||||
discourse-sidekiq:
|
discourse-sidekiq:
|
||||||
image: docker.io/bitnami/discourse:3.3.2
|
image: docker.io/bitnami/discourse:3.3.2
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- discourse-sidekiq-data:/bitnami/discourse
|
- discourse-sidekiq-data:/bitnami/discourse
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ services:
|
|||||||
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=public
|
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=public
|
||||||
- REDIS_URL=redis://redis:6379
|
- REDIS_URL=redis://redis:6379
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- docmost:/app/data/storage
|
- docmost:/app/data/storage
|
||||||
|
|
||||||
@@ -24,16 +23,14 @@ services:
|
|||||||
- POSTGRES_USER
|
- POSTGRES_USER
|
||||||
- POSTGRES_PASSWORD
|
- POSTGRES_PASSWORD
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- db_docmost_data:/var/lib/postgresql/data
|
- db_docmost_data:/var/lib/postgresql/data
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7.2-alpine
|
image: redis:7.2-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- redis_docmost_data:/data
|
- redis_docmost_data:/data
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ version: "3.8"
|
|||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:16
|
image: postgres:16
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- documenso-data:/var/lib/postgresql/data
|
- documenso-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -4,16 +4,14 @@ services:
|
|||||||
image: plantuml/plantuml-server
|
image: plantuml/plantuml-server
|
||||||
ports:
|
ports:
|
||||||
- "8080"
|
- "8080"
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- fonts_volume:/usr/share/fonts/drawio
|
- fonts_volume:/usr/share/fonts/drawio
|
||||||
image-export:
|
image-export:
|
||||||
image: jgraph/export-server
|
image: jgraph/export-server
|
||||||
ports:
|
ports:
|
||||||
- "8000"
|
- "8000"
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- fonts_volume:/usr/share/fonts/drawio
|
- fonts_volume:/usr/share/fonts/drawio
|
||||||
environment:
|
environment:
|
||||||
@@ -28,8 +26,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- plantuml-server
|
- plantuml-server
|
||||||
- image-export
|
- image-export
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
RAWIO_SELF_CONTAINED: 1
|
RAWIO_SELF_CONTAINED: 1
|
||||||
DRAWIO_USE_HTTP: 1
|
DRAWIO_USE_HTTP: 1
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- evolution-instances:/evolution/instances
|
- evolution-instances:/evolution/instances
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- SERVER_URL=${SERVER_URL}
|
- SERVER_URL=${SERVER_URL}
|
||||||
- AUTHENTICATION_TYPE=${AUTHENTICATION_TYPE}
|
- AUTHENTICATION_TYPE=${AUTHENTICATION_TYPE}
|
||||||
@@ -36,8 +35,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- evolution-postgres-data:/var/lib/postgresql/data
|
- evolution-postgres-data:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_DB=${POSTGRES_DATABASE}
|
- POSTGRES_DB=${POSTGRES_DATABASE}
|
||||||
- POSTGRES_USER=${POSTGRES_USERNAME}
|
- POSTGRES_USER=${POSTGRES_USERNAME}
|
||||||
@@ -48,8 +46,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- evolution-redis-data:/data
|
- evolution-redis-data:/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
dokploy-network:
|
dokploy-network:
|
||||||
|
|||||||
@@ -2,6 +2,5 @@ version: "3.8"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
excalidraw:
|
excalidraw:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: excalidraw/excalidraw:latest
|
image: excalidraw/excalidraw:latest
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ services:
|
|||||||
- postgres:/var/lib/postgresql/data
|
- postgres:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD=postgres
|
- POSTGRES_PASSWORD=postgres
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
formbricks:
|
formbricks:
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ services:
|
|||||||
db:
|
db:
|
||||||
image: mysql:8.0
|
image: mysql:8.0
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: example
|
MYSQL_ROOT_PASSWORD: example
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ services:
|
|||||||
- GITEA__database__USER=gitea
|
- GITEA__database__USER=gitea
|
||||||
- GITEA__database__PASSWD=gitea
|
- GITEA__database__PASSWD=gitea
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- gitea_server:/data
|
- gitea_server:/data
|
||||||
- /etc/timezone:/etc/timezone:ro
|
- /etc/timezone:/etc/timezone:ro
|
||||||
@@ -27,8 +26,7 @@ services:
|
|||||||
- POSTGRES_USER=gitea
|
- POSTGRES_USER=gitea
|
||||||
- POSTGRES_PASSWORD=gitea
|
- POSTGRES_PASSWORD=gitea
|
||||||
- POSTGRES_DB=gitea
|
- POSTGRES_DB=gitea
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- gitea_db:/var/lib/postgresql/data
|
- gitea_db:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
|||||||
@@ -20,13 +20,11 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- pg-data:/var/lib/postgresql/data
|
- pg-data:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
web:
|
web:
|
||||||
image: glitchtip/glitchtip:v4.0
|
image: glitchtip/glitchtip:v4.0
|
||||||
depends_on: *default-depends_on
|
depends_on: *default-depends_on
|
||||||
@@ -44,15 +42,13 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- uploads:/code/uploads
|
- uploads:/code/uploads
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
migrate:
|
migrate:
|
||||||
image: glitchtip/glitchtip:v4.0
|
image: glitchtip/glitchtip:v4.0
|
||||||
depends_on: *default-depends_on
|
depends_on: *default-depends_on
|
||||||
command: "./manage.py migrate"
|
command: "./manage.py migrate"
|
||||||
environment: *default-environment
|
environment: *default-environment
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pg-data:
|
pg-data:
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- glpi-mysql-data:/var/lib/mysql
|
- glpi-mysql-data:/var/lib/mysql
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
glpi-web:
|
glpi-web:
|
||||||
image: elestio/glpi:10.0.16
|
image: elestio/glpi:10.0.16
|
||||||
@@ -16,8 +15,7 @@ services:
|
|||||||
- glpi-www-data:/var/www/html/glpi
|
- glpi-www-data:/var/www/html/glpi
|
||||||
environment:
|
environment:
|
||||||
- TIMEZONE=Europe/Brussels
|
- TIMEZONE=Europe/Brussels
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
glpi-mysql-data:
|
glpi-mysql-data:
|
||||||
|
|||||||
@@ -28,8 +28,7 @@ services:
|
|||||||
postgres:
|
postgres:
|
||||||
image: elestio/postgres:16
|
image: elestio/postgres:16
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_DB
|
- POSTGRES_DB
|
||||||
- POSTGRES_USER
|
- POSTGRES_USER
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ name: ${DOCKER_NAME}
|
|||||||
version: "3"
|
version: "3"
|
||||||
services:
|
services:
|
||||||
nginx:
|
nginx:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: "nginx:1.21.3"
|
image: "nginx:1.21.3"
|
||||||
ports:
|
ports:
|
||||||
- 80
|
- 80
|
||||||
@@ -12,8 +11,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
mongodb:
|
mongodb:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: "mongo:7-jammy"
|
image: "mongo:7-jammy"
|
||||||
environment:
|
environment:
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
@@ -23,8 +21,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
minio:
|
minio:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: "minio/minio:RELEASE.2024-11-07T00-52-20Z"
|
image: "minio/minio:RELEASE.2024-11-07T00-52-20Z"
|
||||||
command: server /data --address ":9000" --console-address ":9001"
|
command: server /data --address ":9000" --console-address ":9001"
|
||||||
volumes:
|
volumes:
|
||||||
@@ -32,8 +29,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
elastic:
|
elastic:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: "elasticsearch:7.14.2"
|
image: "elasticsearch:7.14.2"
|
||||||
command: |
|
command: |
|
||||||
/bin/sh -c "./bin/elasticsearch-plugin list | grep -q ingest-attachment || yes | ./bin/elasticsearch-plugin install --silent ingest-attachment;
|
/bin/sh -c "./bin/elasticsearch-plugin list | grep -q ingest-attachment || yes | ./bin/elasticsearch-plugin install --silent ingest-attachment;
|
||||||
@@ -54,8 +50,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
rekoni:
|
rekoni:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/rekoni-service:${HULY_VERSION}
|
image: hardcoreeng/rekoni-service:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- SECRET=${SECRET}
|
- SECRET=${SECRET}
|
||||||
@@ -66,8 +61,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
transactor:
|
transactor:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/transactor:${HULY_VERSION}
|
image: hardcoreeng/transactor:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- SERVER_PORT=3333
|
- SERVER_PORT=3333
|
||||||
@@ -84,8 +78,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
collaborator:
|
collaborator:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/collaborator:${HULY_VERSION}
|
image: hardcoreeng/collaborator:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- COLLABORATOR_PORT=3078
|
- COLLABORATOR_PORT=3078
|
||||||
@@ -97,8 +90,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
account:
|
account:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/account:${HULY_VERSION}
|
image: hardcoreeng/account:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- SERVER_PORT=3000
|
- SERVER_PORT=3000
|
||||||
@@ -115,8 +107,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
workspace:
|
workspace:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/workspace:${HULY_VERSION}
|
image: hardcoreeng/workspace:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- SERVER_SECRET=${SECRET}
|
- SERVER_SECRET=${SECRET}
|
||||||
@@ -130,8 +121,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
front:
|
front:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/front:${HULY_VERSION}
|
image: hardcoreeng/front:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- SERVER_PORT=8080
|
- SERVER_PORT=8080
|
||||||
@@ -156,8 +146,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
fulltext:
|
fulltext:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/fulltext:${HULY_VERSION}
|
image: hardcoreeng/fulltext:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- SERVER_SECRET=${SECRET}
|
- SERVER_SECRET=${SECRET}
|
||||||
@@ -171,8 +160,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
stats:
|
stats:
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
image: hardcoreeng/stats:${HULY_VERSION}
|
image: hardcoreeng/stats:${HULY_VERSION}
|
||||||
environment:
|
environment:
|
||||||
- PORT=4900
|
- PORT=4900
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ version: "3.9"
|
|||||||
services:
|
services:
|
||||||
immich-server:
|
immich-server:
|
||||||
image: ghcr.io/immich-app/immich-server:v1.121.0
|
image: ghcr.io/immich-app/immich-server:v1.121.0
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- immich-library:/usr/src/app/upload
|
- immich-library:/usr/src/app/upload
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
@@ -38,8 +37,7 @@ services:
|
|||||||
|
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
image: ghcr.io/immich-app/immich-machine-learning:v1.121.0
|
image: ghcr.io/immich-app/immich-machine-learning:v1.121.0
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- immich-model-cache:/cache
|
- immich-model-cache:/cache
|
||||||
environment:
|
environment:
|
||||||
@@ -55,8 +53,7 @@ services:
|
|||||||
|
|
||||||
immich-redis:
|
immich-redis:
|
||||||
image: redis:6.2-alpine
|
image: redis:6.2-alpine
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- immich-redis-data:/data
|
- immich-redis-data:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -68,8 +65,7 @@ services:
|
|||||||
|
|
||||||
immich-database:
|
immich-database:
|
||||||
image: tensorchord/pgvecto-rs:pg14-v0.2.0
|
image: tensorchord/pgvecto-rs:pg14-v0.2.0
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- immich-postgres:/var/lib/postgresql/data
|
- immich-postgres:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -19,8 +19,7 @@ services:
|
|||||||
- SMTP_SECURE=true
|
- SMTP_SECURE=true
|
||||||
command: npm run migration:latest
|
command: npm run migration:latest
|
||||||
pull_policy: always
|
pull_policy: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -46,8 +45,7 @@ services:
|
|||||||
- SMTP_USERNAME
|
- SMTP_USERNAME
|
||||||
- SMTP_PASSWORD
|
- SMTP_PASSWORD
|
||||||
- SMTP_SECURE=true
|
- SMTP_SECURE=true
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7.4.1
|
image: redis:7.4.1
|
||||||
@@ -55,8 +53,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
- ALLOW_EMPTY_PASSWORD=yes
|
- ALLOW_EMPTY_PASSWORD=yes
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- redis_infisical_data:/data
|
- redis_infisical_data:/data
|
||||||
|
|
||||||
@@ -69,8 +66,7 @@ services:
|
|||||||
- POSTGRES_DB
|
- POSTGRES_DB
|
||||||
volumes:
|
volumes:
|
||||||
- pg_infisical_data:/var/lib/postgresql/data
|
- pg_infisical_data:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list"
|
test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list"
|
||||||
interval: 5s
|
interval: 5s
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ version: "3.8"
|
|||||||
services:
|
services:
|
||||||
invoiceshelf-postgres:
|
invoiceshelf-postgres:
|
||||||
image: postgres:15
|
image: postgres:15
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- invoiceshelf-postgres-data:/var/lib/postgresql/data
|
- invoiceshelf-postgres-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
@@ -19,8 +18,7 @@ services:
|
|||||||
|
|
||||||
invoiceshelf-app:
|
invoiceshelf-app:
|
||||||
image: invoiceshelf/invoiceshelf:latest
|
image: invoiceshelf/invoiceshelf:latest
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- invoiceshelf-app-data:/data
|
- invoiceshelf-app-data:/data
|
||||||
- invoiceshelf-app-conf:/conf
|
- invoiceshelf-app-conf:/conf
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
db:
|
db:
|
||||||
image: mariadb:10.11
|
image: mariadb:10.11
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -39,8 +38,7 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
dokploy-network:
|
dokploy-network:
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ services:
|
|||||||
# This variable defines where the logs, file storage, monitor data and secret keys are stored.
|
# This variable defines where the logs, file storage, monitor data and secret keys are stored.
|
||||||
volumes:
|
volumes:
|
||||||
- langflow-data:/app/langflow
|
- langflow-data:/app/langflow
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
postgres-langflow:
|
postgres-langflow:
|
||||||
image: postgres:16
|
image: postgres:16
|
||||||
@@ -25,8 +24,7 @@ services:
|
|||||||
- 5432
|
- 5432
|
||||||
volumes:
|
volumes:
|
||||||
- langflow-postgres:/var/lib/postgresql/data
|
- langflow-postgres:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
langflow-postgres:
|
langflow-postgres:
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ services:
|
|||||||
image: postgres:17-alpine
|
image: postgres:17-alpine
|
||||||
ports:
|
ports:
|
||||||
- 5432
|
- 5432
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD=listmonk
|
- POSTGRES_PASSWORD=listmonk
|
||||||
- POSTGRES_USER=listmonk
|
- POSTGRES_USER=listmonk
|
||||||
@@ -20,8 +19,7 @@ services:
|
|||||||
|
|
||||||
setup:
|
setup:
|
||||||
image: listmonk/listmonk:v4.1.0
|
image: listmonk/listmonk:v4.1.0
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../files/config.toml:/listmonk/config.toml
|
- ../files/config.toml:/listmonk/config.toml
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 3001
|
- 3001
|
||||||
- 3002
|
- 3002
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
TRUST_PROXY_HEADER: 1
|
TRUST_PROXY_HEADER: 1
|
||||||
DB_URL: postgres://logto:${LOGTO_POSTGRES_PASSWORD}@postgres:5432/logto
|
DB_URL: postgres://logto:${LOGTO_POSTGRES_PASSWORD}@postgres:5432/logto
|
||||||
@@ -20,8 +19,7 @@ services:
|
|||||||
postgres:
|
postgres:
|
||||||
image: postgres:17-alpine
|
image: postgres:17-alpine
|
||||||
user: postgres
|
user: postgres
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: logto
|
POSTGRES_USER: logto
|
||||||
POSTGRES_PASSWORD: ${LOGTO_POSTGRES_PASSWORD}
|
POSTGRES_PASSWORD: ${LOGTO_POSTGRES_PASSWORD}
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ services:
|
|||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- db-data:/var/lib/postgresql/data
|
- db-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -22,5 +22,4 @@ services:
|
|||||||
POSTGRES_USER: metabase
|
POSTGRES_USER: metabase
|
||||||
POSTGRES_DB: metabaseappdb
|
POSTGRES_DB: metabaseappdb
|
||||||
POSTGRES_PASSWORD: mysecretpassword
|
POSTGRES_PASSWORD: mysecretpassword
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ services:
|
|||||||
nextcloud:
|
nextcloud:
|
||||||
image: nextcloud:30.0.2
|
image: nextcloud:30.0.2
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
ports:
|
ports:
|
||||||
- 80
|
- 80
|
||||||
volumes:
|
volumes:
|
||||||
@@ -19,8 +18,7 @@ services:
|
|||||||
nextcloud_db:
|
nextcloud_db:
|
||||||
image: mariadb
|
image: mariadb
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- nextcloud_db_data:/var/lib/mysql
|
- nextcloud_db_data:/var/lib/mysql
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ services:
|
|||||||
root_db:
|
root_db:
|
||||||
image: postgres:17
|
image: postgres:17
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: root_db
|
POSTGRES_DB: root_db
|
||||||
POSTGRES_PASSWORD: password
|
POSTGRES_PASSWORD: password
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ services:
|
|||||||
|
|
||||||
db:
|
db:
|
||||||
image: postgres:13
|
image: postgres:13
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_DB=postgres
|
- POSTGRES_DB=postgres
|
||||||
- POSTGRES_USER=odoo
|
- POSTGRES_USER=odoo
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ services:
|
|||||||
ollama:
|
ollama:
|
||||||
volumes:
|
volumes:
|
||||||
- ollama:/root/.ollama
|
- ollama:/root/.ollama
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
pull_policy: always
|
pull_policy: always
|
||||||
tty: true
|
tty: true
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
@@ -46,8 +46,7 @@ services:
|
|||||||
- penpot-backend
|
- penpot-backend
|
||||||
- penpot-exporter
|
- penpot-exporter
|
||||||
|
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
PENPOT_FLAGS: disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies
|
PENPOT_FLAGS: disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies
|
||||||
@@ -63,8 +62,7 @@ services:
|
|||||||
- penpot-postgres
|
- penpot-postgres
|
||||||
- penpot-redis
|
- penpot-redis
|
||||||
|
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
## Configuration envronment variables for the backend
|
## Configuration envronment variables for the backend
|
||||||
## container.
|
## container.
|
||||||
@@ -143,8 +141,7 @@ services:
|
|||||||
penpot-exporter:
|
penpot-exporter:
|
||||||
image: "penpotapp/exporter:2.3.2"
|
image: "penpotapp/exporter:2.3.2"
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
# Don't touch it; this uses an internal docker network to
|
# Don't touch it; this uses an internal docker network to
|
||||||
@@ -162,8 +159,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- penpot_postgres_v15:/var/lib/postgresql/data
|
- penpot_postgres_v15:/var/lib/postgresql/data
|
||||||
|
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_INITDB_ARGS=--data-checksums
|
- POSTGRES_INITDB_ARGS=--data-checksums
|
||||||
@@ -174,8 +170,7 @@ services:
|
|||||||
penpot-redis:
|
penpot-redis:
|
||||||
image: redis:7.2
|
image: redis:7.2
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
## A mailcatch service, used as temporal SMTP server. You can access via HTTP to the
|
## A mailcatch service, used as temporal SMTP server. You can access via HTTP to the
|
||||||
## port 1080 for read all emails the penpot platform has sent. Should be only used as a
|
## port 1080 for read all emails the penpot platform has sent. Should be only used as a
|
||||||
@@ -188,8 +183,7 @@ services:
|
|||||||
- '1025'
|
- '1025'
|
||||||
ports:
|
ports:
|
||||||
- 1080
|
- 1080
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
## Example configuration of MiniIO (S3 compatible object storage service); If you don't
|
## Example configuration of MiniIO (S3 compatible object storage service); If you don't
|
||||||
## have preference, then just use filesystem, this is here just for the completeness.
|
## have preference, then just use filesystem, this is here just for the completeness.
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ services:
|
|||||||
peppermint-postgres:
|
peppermint-postgres:
|
||||||
image: postgres:latest
|
image: postgres:latest
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- peppermint-postgres-data:/var/lib/postgresql/data
|
- peppermint-postgres-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
@@ -21,8 +20,7 @@ services:
|
|||||||
peppermint-app:
|
peppermint-app:
|
||||||
image: pepperlabs/peppermint:latest
|
image: pepperlabs/peppermint:latest
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
peppermint-postgres:
|
peppermint-postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ services:
|
|||||||
security_opt:
|
security_opt:
|
||||||
- seccomp:unconfined
|
- seccomp:unconfined
|
||||||
- apparmor:unconfined
|
- apparmor:unconfined
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
PHOTOPRISM_ADMIN_USER: "admin"
|
PHOTOPRISM_ADMIN_USER: "admin"
|
||||||
PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
|
PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
|
||||||
@@ -57,8 +56,7 @@ services:
|
|||||||
image: mariadb:11
|
image: mariadb:11
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
stop_grace_period: 5s
|
stop_grace_period: 5s
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
security_opt:
|
security_opt:
|
||||||
- seccomp:unconfined
|
- seccomp:unconfined
|
||||||
- apparmor:unconfined
|
- apparmor:unconfined
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ services:
|
|||||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
- db_data:/var/lib/mysql
|
- db_data:/var/lib/mysql
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
image: phpmyadmin/phpmyadmin:5.2.1
|
image: phpmyadmin/phpmyadmin:5.2.1
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ services:
|
|||||||
plausible_db:
|
plausible_db:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- db-data:/var/lib/postgresql/data
|
- db-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
@@ -13,8 +12,7 @@ services:
|
|||||||
plausible_events_db:
|
plausible_events_db:
|
||||||
image: clickhouse/clickhouse-server:24.3.3.102-alpine
|
image: clickhouse/clickhouse-server:24.3.3.102-alpine
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- event-data:/var/lib/clickhouse
|
- event-data:/var/lib/clickhouse
|
||||||
- event-logs:/var/log/clickhouse-server
|
- event-logs:/var/log/clickhouse-server
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
mode: global
|
mode: global
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ services:
|
|||||||
postiz-app:
|
postiz-app:
|
||||||
image: ghcr.io/gitroomhq/postiz-app:latest
|
image: ghcr.io/gitroomhq/postiz-app:latest
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
MAIN_URL: "https://${POSTIZ_HOST}"
|
MAIN_URL: "https://${POSTIZ_HOST}"
|
||||||
FRONTEND_URL: "https://${POSTIZ_HOST}"
|
FRONTEND_URL: "https://${POSTIZ_HOST}"
|
||||||
@@ -30,8 +29,7 @@ services:
|
|||||||
postiz-postgres:
|
postiz-postgres:
|
||||||
image: postgres:17-alpine
|
image: postgres:17-alpine
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||||
POSTGRES_USER: ${DB_USER}
|
POSTGRES_USER: ${DB_USER}
|
||||||
@@ -47,8 +45,7 @@ services:
|
|||||||
postiz-redis:
|
postiz-redis:
|
||||||
image: redis:7.2
|
image: redis:7.2
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping
|
test: redis-cli ping
|
||||||
interval: 10s
|
interval: 10s
|
||||||
|
|||||||
@@ -28,8 +28,7 @@ services:
|
|||||||
MONGODB_ADVERTISED_HOSTNAME: mongodb
|
MONGODB_ADVERTISED_HOSTNAME: mongodb
|
||||||
MONGODB_ENABLE_JOURNAL: true
|
MONGODB_ENABLE_JOURNAL: true
|
||||||
ALLOW_EMPTY_PASSWORD: yes
|
ALLOW_EMPTY_PASSWORD: yes
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mongodb_data: { driver: local }
|
mongodb_data: { driver: local }
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ services:
|
|||||||
- ROUNDCUBEMAIL_SKIN=elastic
|
- ROUNDCUBEMAIL_SKIN=elastic
|
||||||
- ROUNDCUBEMAIL_DEFAULT_HOST=${DEFAULT_HOST}
|
- ROUNDCUBEMAIL_DEFAULT_HOST=${DEFAULT_HOST}
|
||||||
- ROUNDCUBEMAIL_SMTP_SERVER=${SMTP_SERVER}
|
- ROUNDCUBEMAIL_SMTP_SERVER=${SMTP_SERVER}
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
dokploy-network:
|
dokploy-network:
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ version: '3.7'
|
|||||||
services:
|
services:
|
||||||
ryot-app:
|
ryot-app:
|
||||||
image: ignisda/ryot:v7.10
|
image: ignisda/ryot:v7.10
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@ryot-db:5432/postgres
|
- DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@ryot-db:5432/postgres
|
||||||
- SERVER_ADMIN_ACCESS_TOKEN=${ADMIN_ACCESS_TOKEN}
|
- SERVER_ADMIN_ACCESS_TOKEN=${ADMIN_ACCESS_TOKEN}
|
||||||
@@ -19,8 +18,7 @@ services:
|
|||||||
|
|
||||||
ryot-db:
|
ryot-db:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- ryot-postgres-data:/var/lib/postgresql/data
|
- ryot-postgres-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ version: "3.8"
|
|||||||
services:
|
services:
|
||||||
slash-app:
|
slash-app:
|
||||||
image: yourselfhosted/slash:latest
|
image: yourselfhosted/slash:latest
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- slash-app-data:/var/opt/slash
|
- slash-app-data:/var/opt/slash
|
||||||
environment:
|
environment:
|
||||||
@@ -17,8 +16,7 @@ services:
|
|||||||
|
|
||||||
slash-postgres:
|
slash-postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- slash-postgres-data:/var/lib/postgresql/data
|
- slash-postgres-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ services:
|
|||||||
studio:
|
studio:
|
||||||
container_name: supabase-studio
|
container_name: supabase-studio
|
||||||
image: supabase/studio:20240729-ce42139
|
image: supabase/studio:20240729-ce42139
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
@@ -53,8 +52,7 @@ services:
|
|||||||
container_name: supabase-kong
|
container_name: supabase-kong
|
||||||
image: kong:2.8.1
|
image: kong:2.8.1
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
# https://unix.stackexchange.com/a/294837
|
# https://unix.stackexchange.com/a/294837
|
||||||
entrypoint: bash -c 'eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start'
|
entrypoint: bash -c 'eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start'
|
||||||
#ports:
|
#ports:
|
||||||
@@ -85,8 +83,7 @@ services:
|
|||||||
auth:
|
auth:
|
||||||
container_name: supabase-auth
|
container_name: supabase-auth
|
||||||
image: supabase/gotrue:v2.158.1
|
image: supabase/gotrue:v2.158.1
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
# Disable this if you are using an external Postgres database
|
# Disable this if you are using an external Postgres database
|
||||||
@@ -157,8 +154,7 @@ services:
|
|||||||
rest:
|
rest:
|
||||||
container_name: supabase-rest
|
container_name: supabase-rest
|
||||||
image: postgrest/postgrest:v12.2.0
|
image: postgrest/postgrest:v12.2.0
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
# Disable this if you are using an external Postgres database
|
# Disable this if you are using an external Postgres database
|
||||||
@@ -180,8 +176,7 @@ services:
|
|||||||
# This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain
|
# This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain
|
||||||
container_name: realtime-dev.supabase-realtime
|
container_name: realtime-dev.supabase-realtime
|
||||||
image: supabase/realtime:v2.30.23
|
image: supabase/realtime:v2.30.23
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
# Disable this if you are using an external Postgres database
|
# Disable this if you are using an external Postgres database
|
||||||
@@ -226,8 +221,7 @@ services:
|
|||||||
storage:
|
storage:
|
||||||
container_name: supabase-storage
|
container_name: supabase-storage
|
||||||
image: supabase/storage-api:v1.0.6
|
image: supabase/storage-api:v1.0.6
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
# Disable this if you are using an external Postgres database
|
# Disable this if you are using an external Postgres database
|
||||||
@@ -271,8 +265,7 @@ services:
|
|||||||
imgproxy:
|
imgproxy:
|
||||||
container_name: supabase-imgproxy
|
container_name: supabase-imgproxy
|
||||||
image: darthsim/imgproxy:v3.8.0
|
image: darthsim/imgproxy:v3.8.0
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "imgproxy", "health"]
|
test: ["CMD", "imgproxy", "health"]
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
@@ -289,8 +282,7 @@ services:
|
|||||||
meta:
|
meta:
|
||||||
container_name: supabase-meta
|
container_name: supabase-meta
|
||||||
image: supabase/postgres-meta:v0.83.2
|
image: supabase/postgres-meta:v0.83.2
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
# Disable this if you are using an external Postgres database
|
# Disable this if you are using an external Postgres database
|
||||||
@@ -310,8 +302,7 @@ services:
|
|||||||
container_name: supabase-edge-functions
|
container_name: supabase-edge-functions
|
||||||
image: supabase/edge-runtime:v1.56.0
|
image: supabase/edge-runtime:v1.56.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
analytics:
|
analytics:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -333,8 +324,7 @@ services:
|
|||||||
analytics:
|
analytics:
|
||||||
container_name: supabase-analytics
|
container_name: supabase-analytics
|
||||||
image: supabase/logflare:1.4.0
|
image: supabase/logflare:1.4.0
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "http://localhost:4000/health"]
|
test: ["CMD", "curl", "http://localhost:4000/health"]
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
@@ -380,8 +370,7 @@ services:
|
|||||||
db:
|
db:
|
||||||
container_name: supabase-db
|
container_name: supabase-db
|
||||||
image: supabase/postgres:15.1.1.78
|
image: supabase/postgres:15.1.1.78
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: pg_isready -U postgres -h localhost
|
test: pg_isready -U postgres -h localhost
|
||||||
interval: 5s
|
interval: 5s
|
||||||
@@ -430,8 +419,7 @@ services:
|
|||||||
vector:
|
vector:
|
||||||
container_name: supabase-vector
|
container_name: supabase-vector
|
||||||
image: timberio/vector:0.28.1-alpine
|
image: timberio/vector:0.28.1-alpine
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -43,8 +43,7 @@ services:
|
|||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
superset_redis:
|
superset_redis:
|
||||||
image: redis
|
image: redis
|
||||||
@@ -57,8 +56,7 @@ services:
|
|||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
superset_postgres_data:
|
superset_postgres_data:
|
||||||
|
|||||||
@@ -41,8 +41,7 @@ services:
|
|||||||
- POSTGRES_DB=${POSTGRES_DB}
|
- POSTGRES_DB=${POSTGRES_DB}
|
||||||
- POSTGRES_USER=${POSTGRES_USER}
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
[
|
[
|
||||||
@@ -58,8 +57,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
- PRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
- PRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
depends_on:
|
depends_on:
|
||||||
teable-db:
|
teable-db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|||||||
@@ -1467,8 +1467,8 @@ export const templates: TemplateData[] = [
|
|||||||
},
|
},
|
||||||
tags: ["hrms", "payroll", "leaves", "expenses", "attendance", "performace"],
|
tags: ["hrms", "payroll", "leaves", "expenses", "attendance", "performace"],
|
||||||
load: () => import("./frappe-hr/index").then((m) => m.generate),
|
load: () => import("./frappe-hr/index").then((m) => m.generate),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "formbricks",
|
id: "formbricks",
|
||||||
name: "Formbricks",
|
name: "Formbricks",
|
||||||
version: "v3.1.3",
|
version: "v3.1.3",
|
||||||
@@ -1482,6 +1482,5 @@ export const templates: TemplateData[] = [
|
|||||||
},
|
},
|
||||||
tags: ["forms", "analytics"],
|
tags: ["forms", "analytics"],
|
||||||
load: () => import("./formbricks/index").then((m) => m.generate),
|
load: () => import("./formbricks/index").then((m) => m.generate),
|
||||||
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ services:
|
|||||||
twenty-change-vol-ownership:
|
twenty-change-vol-ownership:
|
||||||
image: ubuntu
|
image: ubuntu
|
||||||
user: root
|
user: root
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- twenty-server-local-data:/tmp/server-local-data
|
- twenty-server-local-data:/tmp/server-local-data
|
||||||
- twenty-docker-data:/tmp/docker-data
|
- twenty-docker-data:/tmp/docker-data
|
||||||
@@ -16,8 +15,7 @@ services:
|
|||||||
|
|
||||||
twenty-server:
|
twenty-server:
|
||||||
image: twentycrm/twenty:latest
|
image: twentycrm/twenty:latest
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- twenty-server-local-data:/app/packages/twenty-server/${STORAGE_LOCAL_PATH:-.local-storage}
|
- twenty-server-local-data:/app/packages/twenty-server/${STORAGE_LOCAL_PATH:-.local-storage}
|
||||||
- twenty-docker-data:/app/docker-data
|
- twenty-docker-data:/app/docker-data
|
||||||
@@ -45,8 +43,7 @@ services:
|
|||||||
|
|
||||||
twenty-worker:
|
twenty-worker:
|
||||||
image: twentycrm/twenty:latest
|
image: twentycrm/twenty:latest
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
command: ["yarn", "worker:prod"]
|
command: ["yarn", "worker:prod"]
|
||||||
environment:
|
environment:
|
||||||
PG_DATABASE_URL: postgres://${DB_USER}:${DB_PASSWORD}@twenty-postgres:5432/twenty
|
PG_DATABASE_URL: postgres://${DB_USER}:${DB_PASSWORD}@twenty-postgres:5432/twenty
|
||||||
@@ -65,8 +62,7 @@ services:
|
|||||||
|
|
||||||
twenty-postgres:
|
twenty-postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- twenty-postgres-data:/var/lib/postgresql/data
|
- twenty-postgres-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
@@ -82,8 +78,7 @@ services:
|
|||||||
|
|
||||||
twenty-redis:
|
twenty-redis:
|
||||||
image: redis:latest
|
image: redis:latest
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- twenty-redis-data:/data
|
- twenty-redis-data:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ services:
|
|||||||
POSTGRES_USER: typebot
|
POSTGRES_USER: typebot
|
||||||
POSTGRES_DB: typebot
|
POSTGRES_DB: typebot
|
||||||
POSTGRES_PASSWORD: typebot
|
POSTGRES_PASSWORD: typebot
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
typebot-builder:
|
typebot-builder:
|
||||||
image: baptistearno/typebot-builder:2.27
|
image: baptistearno/typebot-builder:2.27
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ services:
|
|||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- db-data:/var/lib/postgresql/data
|
- db-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- unifi-db
|
- unifi-db
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
unifi-db:
|
unifi-db:
|
||||||
image: mongo:4.4
|
image: mongo:4.4
|
||||||
@@ -40,8 +39,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 27017
|
- 27017
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
dokploy-network:
|
dokploy-network:
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ name: unsend-prod
|
|||||||
services:
|
services:
|
||||||
unsend-db-prod:
|
unsend-db-prod:
|
||||||
image: postgres:16
|
image: postgres:16
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_USER=${POSTGRES_USER:?err}
|
- POSTGRES_USER=${POSTGRES_USER:?err}
|
||||||
@@ -22,8 +21,7 @@ services:
|
|||||||
|
|
||||||
unsend-redis-prod:
|
unsend-redis-prod:
|
||||||
image: redis:7
|
image: redis:7
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
restart: always
|
restart: always
|
||||||
# ports:
|
# ports:
|
||||||
# - "6379:6379"
|
# - "6379:6379"
|
||||||
@@ -33,8 +31,7 @@ services:
|
|||||||
|
|
||||||
unsend-storage-prod:
|
unsend-storage-prod:
|
||||||
image: minio/minio:RELEASE.2024-11-07T00-52-20Z
|
image: minio/minio:RELEASE.2024-11-07T00-52-20Z
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
ports:
|
ports:
|
||||||
- 9002
|
- 9002
|
||||||
- 9001
|
- 9001
|
||||||
@@ -48,8 +45,6 @@ services:
|
|||||||
|
|
||||||
unsend:
|
unsend:
|
||||||
image: unsend/unsend:v1.3.2
|
image: unsend/unsend:v1.3.2
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- ${PORT:-3000}
|
- ${PORT:-3000}
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- windmill-postgres-data:/var/lib/postgresql/data
|
- windmill-postgres-data:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
POSTGRES_DB: windmill
|
POSTGRES_DB: windmill
|
||||||
@@ -20,8 +19,7 @@ services:
|
|||||||
|
|
||||||
windmill-server:
|
windmill-server:
|
||||||
image: ghcr.io/windmill-labs/windmill:main
|
image: ghcr.io/windmill-labs/windmill:main
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=${DATABASE_URL}
|
- DATABASE_URL=${DATABASE_URL}
|
||||||
@@ -42,8 +40,7 @@ services:
|
|||||||
cpus: "1"
|
cpus: "1"
|
||||||
memory: 2048M
|
memory: 2048M
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=${DATABASE_URL}
|
- DATABASE_URL=${DATABASE_URL}
|
||||||
- MODE=worker
|
- MODE=worker
|
||||||
@@ -65,8 +62,7 @@ services:
|
|||||||
cpus: "0.1"
|
cpus: "0.1"
|
||||||
memory: 128M
|
memory: 128M
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=${DATABASE_URL}
|
- DATABASE_URL=${DATABASE_URL}
|
||||||
- MODE=worker
|
- MODE=worker
|
||||||
@@ -82,16 +78,14 @@ services:
|
|||||||
windmill-lsp:
|
windmill-lsp:
|
||||||
image: ghcr.io/windmill-labs/windmill-lsp:latest
|
image: ghcr.io/windmill-labs/windmill-lsp:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- windmill-lsp-cache:/root/.cache
|
- windmill-lsp-cache:/root/.cache
|
||||||
|
|
||||||
windmill-caddy:
|
windmill-caddy:
|
||||||
image: ghcr.io/windmill-labs/caddy-l4:latest
|
image: ghcr.io/windmill-labs/caddy-l4:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../files/Caddyfile:/etc/caddy/Caddyfile
|
- ../files/Caddyfile:/etc/caddy/Caddyfile
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ services:
|
|||||||
|
|
||||||
db:
|
db:
|
||||||
image: mysql:5.7.34
|
image: mysql:5.7.34
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
MYSQL_DATABASE: exampledb
|
MYSQL_DATABASE: exampledb
|
||||||
MYSQL_USER: exampleuser
|
MYSQL_USER: exampleuser
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ version: '3.7'
|
|||||||
services:
|
services:
|
||||||
yourls-app:
|
yourls-app:
|
||||||
image: yourls:1.9.2
|
image: yourls:1.9.2
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
YOURLS_SITE: https://${YOURLS_HOST}
|
YOURLS_SITE: https://${YOURLS_HOST}
|
||||||
YOURLS_USER: ${YOURLS_ADMIN_USER}
|
YOURLS_USER: ${YOURLS_ADMIN_USER}
|
||||||
@@ -22,8 +21,7 @@ services:
|
|||||||
|
|
||||||
yourls-mysql:
|
yourls-mysql:
|
||||||
image: mysql:5.7
|
image: mysql:5.7
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||||
MYSQL_DATABASE: yourls
|
MYSQL_DATABASE: yourls
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ version: "3"
|
|||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:15
|
image: postgres:15
|
||||||
networks:
|
|
||||||
- dokploy-network
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_USER=postgres
|
- POSTGRES_USER=postgres
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ export const compose = pgTable("compose", {
|
|||||||
composePath: text("composePath").notNull().default("./docker-compose.yml"),
|
composePath: text("composePath").notNull().default("./docker-compose.yml"),
|
||||||
suffix: text("suffix").notNull().default(""),
|
suffix: text("suffix").notNull().default(""),
|
||||||
randomize: boolean("randomize").notNull().default(false),
|
randomize: boolean("randomize").notNull().default(false),
|
||||||
|
isolatedDeployment: boolean("isolatedDeployment").notNull().default(false),
|
||||||
composeStatus: applicationStatus("composeStatus").notNull().default("idle"),
|
composeStatus: applicationStatus("composeStatus").notNull().default("idle"),
|
||||||
projectId: text("projectId")
|
projectId: text("projectId")
|
||||||
.notNull()
|
.notNull()
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ export * from "./utils/builders/utils";
|
|||||||
export * from "./utils/cluster/upload";
|
export * from "./utils/cluster/upload";
|
||||||
|
|
||||||
export * from "./utils/docker/compose";
|
export * from "./utils/docker/compose";
|
||||||
|
export * from "./utils/docker/collision";
|
||||||
export * from "./utils/docker/domain";
|
export * from "./utils/docker/domain";
|
||||||
export * from "./utils/docker/utils";
|
export * from "./utils/docker/utils";
|
||||||
export * from "./utils/docker/types";
|
export * from "./utils/docker/types";
|
||||||
|
|||||||
@@ -34,6 +34,12 @@ export const buildCompose = async (compose: ComposeNested, logPath: string) => {
|
|||||||
await writeDomainsToCompose(compose, domains);
|
await writeDomainsToCompose(compose, domains);
|
||||||
createEnvFile(compose);
|
createEnvFile(compose);
|
||||||
|
|
||||||
|
if (compose.isolatedDeployment) {
|
||||||
|
await execAsync(
|
||||||
|
`docker network inspect ${compose.appName} >/dev/null 2>&1 || docker network create --attachable ${compose.appName}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const logContent = `
|
const logContent = `
|
||||||
App Name: ${appName}
|
App Name: ${appName}
|
||||||
Build Compose 🐳
|
Build Compose 🐳
|
||||||
@@ -73,6 +79,12 @@ export const buildCompose = async (compose: ComposeNested, logPath: string) => {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (compose.isolatedDeployment) {
|
||||||
|
await execAsync(
|
||||||
|
`docker network connect ${compose.appName} $(docker ps --filter "name=dokploy-traefik" -q) >/dev/null 2>&1`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
writeStream.write("Docker Compose Deployed: ✅");
|
writeStream.write("Docker Compose Deployed: ✅");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
writeStream.write(`Error ❌ ${(error as Error).message}`);
|
writeStream.write(`Error ❌ ${(error as Error).message}`);
|
||||||
@@ -128,9 +140,10 @@ Compose Type: ${composeType} ✅`;
|
|||||||
|
|
||||||
cd "${projectPath}";
|
cd "${projectPath}";
|
||||||
|
|
||||||
${exportEnvCommand}
|
${exportEnvCommand}
|
||||||
|
${compose.isolatedDeployment ? `docker network inspect ${compose.appName} >/dev/null 2>&1 || docker network create --attachable ${compose.appName}` : ""}
|
||||||
docker ${command.split(" ").join(" ")} >> "${logPath}" 2>&1 || { echo "Error: ❌ Docker command failed" >> "${logPath}"; exit 1; }
|
docker ${command.split(" ").join(" ")} >> "${logPath}" 2>&1 || { echo "Error: ❌ Docker command failed" >> "${logPath}"; exit 1; }
|
||||||
|
${compose.isolatedDeployment ? `docker network connect ${compose.appName} $(docker ps --filter "name=dokploy-traefik" -q) >/dev/null 2>&1` : ""}
|
||||||
|
|
||||||
echo "Docker Compose Deployed: ✅" >> "${logPath}"
|
echo "Docker Compose Deployed: ✅" >> "${logPath}"
|
||||||
} || {
|
} || {
|
||||||
|
|||||||
46
packages/server/src/utils/docker/collision.ts
Normal file
46
packages/server/src/utils/docker/collision.ts
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import { findComposeById } from "@dokploy/server/services/compose";
|
||||||
|
import { dump, load } from "js-yaml";
|
||||||
|
import { addAppNameToAllServiceNames } from "./collision/root-network";
|
||||||
|
import { generateRandomHash } from "./compose";
|
||||||
|
import { addSuffixToAllVolumes } from "./compose/volume";
|
||||||
|
import type { ComposeSpecification } from "./types";
|
||||||
|
|
||||||
|
export const addAppNameToPreventCollision = (
|
||||||
|
composeData: ComposeSpecification,
|
||||||
|
appName: string,
|
||||||
|
): ComposeSpecification => {
|
||||||
|
let updatedComposeData = { ...composeData };
|
||||||
|
|
||||||
|
updatedComposeData = addAppNameToAllServiceNames(updatedComposeData, appName);
|
||||||
|
updatedComposeData = addSuffixToAllVolumes(updatedComposeData, appName);
|
||||||
|
return updatedComposeData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const randomizeIsolatedDeploymentComposeFile = async (
|
||||||
|
composeId: string,
|
||||||
|
suffix?: string,
|
||||||
|
) => {
|
||||||
|
const compose = await findComposeById(composeId);
|
||||||
|
const composeFile = compose.composeFile;
|
||||||
|
const composeData = load(composeFile) as ComposeSpecification;
|
||||||
|
|
||||||
|
const randomSuffix = suffix || compose.appName || generateRandomHash();
|
||||||
|
|
||||||
|
const newComposeFile = addAppNameToPreventCollision(
|
||||||
|
composeData,
|
||||||
|
randomSuffix,
|
||||||
|
);
|
||||||
|
|
||||||
|
return dump(newComposeFile);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const randomizeDeployableSpecificationFile = (
|
||||||
|
composeSpec: ComposeSpecification,
|
||||||
|
suffix?: string,
|
||||||
|
) => {
|
||||||
|
if (!suffix) {
|
||||||
|
return composeSpec;
|
||||||
|
}
|
||||||
|
const newComposeFile = addAppNameToPreventCollision(composeSpec, suffix);
|
||||||
|
return newComposeFile;
|
||||||
|
};
|
||||||
62
packages/server/src/utils/docker/collision/root-network.ts
Normal file
62
packages/server/src/utils/docker/collision/root-network.ts
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import _ from "lodash";
|
||||||
|
import type { ComposeSpecification, DefinitionsService } from "../types";
|
||||||
|
|
||||||
|
export const addAppNameToRootNetwork = (
|
||||||
|
composeData: ComposeSpecification,
|
||||||
|
appName: string,
|
||||||
|
): ComposeSpecification => {
|
||||||
|
const updatedComposeData = { ...composeData };
|
||||||
|
|
||||||
|
// Initialize networks if it doesn't exist
|
||||||
|
if (!updatedComposeData.networks) {
|
||||||
|
updatedComposeData.networks = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the new network with the app name
|
||||||
|
updatedComposeData.networks[appName] = {
|
||||||
|
name: appName,
|
||||||
|
external: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
return updatedComposeData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const addAppNameToServiceNetworks = (
|
||||||
|
services: { [key: string]: DefinitionsService },
|
||||||
|
appName: string,
|
||||||
|
): { [key: string]: DefinitionsService } => {
|
||||||
|
return _.mapValues(services, (service) => {
|
||||||
|
if (!service.networks) {
|
||||||
|
service.networks = [appName];
|
||||||
|
return service;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(service.networks)) {
|
||||||
|
if (!service.networks.includes(appName)) {
|
||||||
|
service.networks.push(appName);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
service.networks[appName] = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
return service;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const addAppNameToAllServiceNames = (
|
||||||
|
composeData: ComposeSpecification,
|
||||||
|
appName: string,
|
||||||
|
): ComposeSpecification => {
|
||||||
|
let updatedComposeData = { ...composeData };
|
||||||
|
|
||||||
|
updatedComposeData = addAppNameToRootNetwork(updatedComposeData, appName);
|
||||||
|
|
||||||
|
if (updatedComposeData.services) {
|
||||||
|
updatedComposeData.services = addAppNameToServiceNetworks(
|
||||||
|
updatedComposeData.services,
|
||||||
|
appName,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return updatedComposeData;
|
||||||
|
};
|
||||||
@@ -26,6 +26,7 @@ import {
|
|||||||
createComposeFileRaw,
|
createComposeFileRaw,
|
||||||
createComposeFileRawRemote,
|
createComposeFileRawRemote,
|
||||||
} from "../providers/raw";
|
} from "../providers/raw";
|
||||||
|
import { randomizeDeployableSpecificationFile } from "./collision";
|
||||||
import { randomizeSpecificationFile } from "./compose";
|
import { randomizeSpecificationFile } from "./compose";
|
||||||
import type {
|
import type {
|
||||||
ComposeSpecification,
|
ComposeSpecification,
|
||||||
@@ -190,7 +191,13 @@ export const addDomainToCompose = async (
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (compose.randomize) {
|
if (compose.isolatedDeployment) {
|
||||||
|
const randomized = randomizeDeployableSpecificationFile(
|
||||||
|
result,
|
||||||
|
compose.suffix || compose.appName,
|
||||||
|
);
|
||||||
|
result = randomized;
|
||||||
|
} else if (compose.randomize) {
|
||||||
const randomized = randomizeSpecificationFile(result, compose.suffix);
|
const randomized = randomizeSpecificationFile(result, compose.suffix);
|
||||||
result = randomized;
|
result = randomized;
|
||||||
}
|
}
|
||||||
@@ -240,14 +247,18 @@ export const addDomainToCompose = async (
|
|||||||
labels.push(...httpLabels);
|
labels.push(...httpLabels);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the dokploy-network to the service
|
if (!compose.isolatedDeployment) {
|
||||||
result.services[serviceName].networks = addDokployNetworkToService(
|
// Add the dokploy-network to the service
|
||||||
result.services[serviceName].networks,
|
result.services[serviceName].networks = addDokployNetworkToService(
|
||||||
);
|
result.services[serviceName].networks,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add dokploy-network to the root of the compose file
|
// Add dokploy-network to the root of the compose file
|
||||||
result.networks = addDokployNetworkToRoot(result.networks);
|
if (!compose.isolatedDeployment) {
|
||||||
|
result.networks = addDokployNetworkToRoot(result.networks);
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user