From 6ed379243ec3561f287923323dbbd83a2afb2925 Mon Sep 17 00:00:00 2001 From: Lorenzo Migliorero Date: Wed, 31 Jul 2024 19:08:34 +0200 Subject: [PATCH 1/3] feat: add publish directory flag --- .../dashboard/application/build/show.tsx | 35 + .../drizzle/0027_red_lady_bullseye.sql | 1 + apps/dokploy/drizzle/meta/0027_snapshot.json | 3016 +++++++++++++++++ apps/dokploy/drizzle/meta/_journal.json | 7 + .../dokploy/server/api/routers/application.ts | 1 + apps/dokploy/server/db/schema/application.ts | 5 +- .../server/utils/builders/docker-file.ts | 12 +- .../dokploy/server/utils/builders/nixpacks.ts | 49 +- apps/dokploy/server/utils/builders/static.ts | 38 + 9 files changed, 3160 insertions(+), 4 deletions(-) create mode 100644 apps/dokploy/drizzle/0027_red_lady_bullseye.sql create mode 100644 apps/dokploy/drizzle/meta/0027_snapshot.json create mode 100644 apps/dokploy/server/utils/builders/static.ts diff --git a/apps/dokploy/components/dashboard/application/build/show.tsx b/apps/dokploy/components/dashboard/application/build/show.tsx index aab78871..db28cb2f 100644 --- a/apps/dokploy/components/dashboard/application/build/show.tsx +++ b/apps/dokploy/components/dashboard/application/build/show.tsx @@ -3,6 +3,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Form, FormControl, + FormDescription, FormField, FormItem, FormLabel, @@ -43,6 +44,7 @@ const mySchema = z.discriminatedUnion("buildType", [ }), z.object({ buildType: z.literal("nixpacks"), + publishDirectory: z.string().optional(), }), ]); @@ -84,6 +86,7 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => { } else { form.reset({ buildType: data.buildType, + publishDirectory: data.publishDirectory || undefined, }); } } @@ -93,6 +96,8 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => { await mutateAsync({ applicationId, buildType: data.buildType, + publishDirectory: + data.buildType === "nixpacks" ? data.publishDirectory : null, dockerfile: data.buildType === "dockerfile" ? data.dockerfile : null, }) .then(async () => { @@ -200,6 +205,36 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => { }} /> )} + + {buildType === "nixpacks" && ( + { + return ( + +
+ Publish Directory + + Allows you to serve a single directory via NGINX after + the build phase. Useful if the final build assets + should be served as a static site. + +
+ + + + + +
+ ); + }} + /> + )}