Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.14.0 #845

Merged
merged 83 commits into from
Dec 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
57594ec
feat<templates>: Updated PocketBase version to 0.23.3
kerimovok Nov 30, 2024
a235815
style: improved discord webhooks notifications
190km Dec 1, 2024
bcf1ba2
feat(i18n): add korean language support
myodan Dec 1, 2024
9a8a40b
style: removed useless codeblock fields
190km Dec 1, 2024
e7383e1
Merge pull request #786 from kerimovok/patch-1
Siumauricio Dec 1, 2024
262a239
Merge pull request #794 from myodan/feat/i18n-ko
Siumauricio Dec 1, 2024
2daa159
style: add RequestAddr in the requests table
190km Dec 1, 2024
5f6516a
Update columns.tsx
190km Dec 1, 2024
841b264
feat: add preview deployments #379
Siumauricio Dec 2, 2024
db27ec0
Merge pull request #796 from 190km/request-addr-host
Siumauricio Dec 2, 2024
fd0a472
feat/fix: fixed stop button & added start button
190km Dec 3, 2024
40c97b8
Update github.ts
190km Dec 3, 2024
d8787ec
style: added autodeploy switch
190km Dec 3, 2024
c4c4b45
fix: allow multiple repositories from same name github #690
Siumauricio Dec 3, 2024
75abc47
Merge pull request #803 from Dokploy/690-dokploy-projects-seem-to-be-…
Siumauricio Dec 3, 2024
626bf7c
Merge pull request #802 from 190km/autodeploy-switch
Siumauricio Dec 3, 2024
df63182
Merge pull request #801 from 190km/start-stop-compose-button
Siumauricio Dec 3, 2024
f10eae4
Merge pull request #793 from 190km/discord-notifications
Siumauricio Dec 3, 2024
00c7ae3
Updated Umami to v2.14.0
DanielGietmann Dec 3, 2024
cbbbe44
feat(i18n): add portuguese language support
pedroramon Dec 4, 2024
14573f9
fix: small typo
ShahriarKh Dec 4, 2024
38e5d24
Merge pull request #810 from ShahriarKh/canary
Siumauricio Dec 5, 2024
7fe8cd0
Merge pull request #808 from DanielGietmann/umami-patch-1
Siumauricio Dec 5, 2024
c9d3616
feat(i18n): add kazakh language support
yerkow Dec 5, 2024
27f43e7
fix: kz label
yerkow Dec 5, 2024
b9faf4b
feat: add prevent dialog when leaving a terminal
190km Dec 5, 2024
48e3d48
Merge pull request #817 from pedroramon/i18n-ptbr
Siumauricio Dec 6, 2024
7f53e9c
add trigger template
mafrasil Dec 6, 2024
2f15f34
rename as triggerdotdev
mafrasil Dec 6, 2024
5e590c1
add extra env
mafrasil Dec 6, 2024
4c34643
tweak env
mafrasil Dec 6, 2024
556a847
Apply suggestions from code review
Siumauricio Dec 7, 2024
5db407b
Update apps/dokploy/templates/triggerdotdev/index.ts
Siumauricio Dec 7, 2024
3d0b6eb
Merge pull request #823 from mafrasil/add-trigger-dev-template
Siumauricio Dec 7, 2024
9d170e5
Merge pull request #820 from 190km/prevent-when-closing-terminal
Siumauricio Dec 7, 2024
b3ca81d
Merge branch 'canary' into i18n-kazakh
Siumauricio Dec 7, 2024
1056810
Add support for configurable Heroku stack version
PiyushDixit96 Dec 1, 2024
4c45be1
feat: add heroku version field
Siumauricio Dec 7, 2024
791c8af
Merge pull request #828 from Dokploy/feat/custom-heroku-version
Siumauricio Dec 7, 2024
a53daed
Merge pull request #814 from yerkow/i18n-kazakh
Siumauricio Dec 7, 2024
64e6919
refactor: improve I18N
Siumauricio Dec 7, 2024
1c1e52f
fix: lint
Siumauricio Dec 7, 2024
2960d81
fix: show mount path when is not compose
Siumauricio Dec 7, 2024
3320e21
Merge pull request #830 from Dokploy/815-edit-volumes-can-not-get-rig…
Siumauricio Dec 7, 2024
f4bd729
test: add missing fields
Siumauricio Dec 7, 2024
5f71a39
Merge pull request #829 from Dokploy/refactor/enhancement-languages
Siumauricio Dec 7, 2024
32b19a0
refactor: add code editor in volumes edit
Siumauricio Dec 7, 2024
5f987d2
Merge pull request #831 from Dokploy/738-code-editor-for-file-mounts
Siumauricio Dec 7, 2024
124d81b
Update CONTRIBUTING.md
drudge Dec 7, 2024
c8b5889
Merge pull request #833 from drudge/canary
Siumauricio Dec 7, 2024
1562396
feat: add Budibase template
drudge Dec 8, 2024
6cf0ecf
feat: add Budibase template
drudge Dec 8, 2024
e023cad
feat: add Kimai 2 template
drudge Dec 8, 2024
1650f5c
feat: add draw.io template
drudge Dec 8, 2024
28a5be9
feat: add Browserless template
drudge Dec 8, 2024
ddf95d8
refactor: add multiple OS
Siumauricio Dec 8, 2024
5058d9b
Merge branch 'canary' into 379-preview-deployment
Siumauricio Dec 8, 2024
46cd220
refactor: clean code
Siumauricio Dec 8, 2024
b1fd1fb
refactor: enable preview deployments if autodeploy is disabled
Siumauricio Dec 8, 2024
3feead3
Merge branch 'canary' into 379-preview-deployment
Siumauricio Dec 8, 2024
f65822c
refactor: recreate message when is deleted
Siumauricio Dec 8, 2024
ff8263d
refactor: update
Siumauricio Dec 8, 2024
60b0ae5
Merge pull request #798 from Dokploy/379-preview-deployment
Siumauricio Dec 8, 2024
b8e41e9
refactor: add password key
Siumauricio Dec 8, 2024
cf3cea6
Merge pull request #836 from drudge/budibase-template
Siumauricio Dec 8, 2024
73b622e
Merge pull request #838 from drudge/kimai-template
Siumauricio Dec 8, 2024
e2a16a5
Update apps/dokploy/templates/drawio/docker-compose.yml
Siumauricio Dec 8, 2024
00764ff
Update apps/dokploy/templates/drawio/docker-compose.yml
Siumauricio Dec 8, 2024
6f818a8
Merge branch 'canary' into drawio-template
Siumauricio Dec 8, 2024
cd06191
Merge pull request #839 from drudge/drawio-template
Siumauricio Dec 8, 2024
9e72995
Merge branch 'canary' into browserless-template
Siumauricio Dec 8, 2024
30eb171
Merge pull request #840 from drudge/browserless-template
Siumauricio Dec 8, 2024
d0be2a2
Merge branch 'canary' into feat/enhancement-script
Siumauricio Dec 8, 2024
e03aef8
refactor: improve script to support more OS
Siumauricio Dec 8, 2024
ce0e9cc
refactor: add preview deployments for cloud version
Siumauricio Dec 8, 2024
b66e8c8
Merge pull request #843 from Dokploy/feat/enhancement-script
Siumauricio Dec 8, 2024
bf9abbc
chore: bump version
Siumauricio Dec 8, 2024
d424ed2
docs: Update ryot links
drudge Dec 9, 2024
13e9a50
Merge pull request #844 from drudge/canary
Siumauricio Dec 9, 2024
9a7ed91
feat: add validate server
Siumauricio Dec 9, 2024
012f8ff
feat: add validate server
Siumauricio Dec 9, 2024
6874ede
refactor: show validate server enabled
Siumauricio Dec 9, 2024
96fbfa7
Merge pull request #847 from Dokploy/feat/improve-server-setup
Siumauricio Dec 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,14 @@ workflows:
only:
- main
- canary
- fix/build-i18n
- 379-preview-deployment
- build-arm64:
filters:
branches:
only:
- main
- canary
- fix/build-i18n
- 379-preview-deployment
- combine-manifests:
requires:
- build-amd64
Expand All @@ -116,4 +116,4 @@ workflows:
only:
- main
- canary
- fix/build-i18n
- 379-preview-deployment
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ export function generate(schema: Schema): Template {

- Use the same name of the folder as the id of the template.
- The logo should be in the public folder.
- If you want to show a domain in the UI, please add the prefix \_HOST at the end of the variable name.
- If you want to show a domain in the UI, please add the `_HOST` suffix at the end of the variable name.
- Test first on a vps or a server to make sure the template works.

## Docs & Website
Expand Down
1 change: 0 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ RUN apt-get update && apt-get install -y curl unzip apache2-utils && rm -rf /var
COPY --from=build /prod/dokploy/.next ./.next
COPY --from=build /prod/dokploy/dist ./dist
COPY --from=build /prod/dokploy/next.config.mjs ./next.config.mjs
COPY --from=build /prod/dokploy/next-i18next.config.cjs ./next-i18next.config.cjs
COPY --from=build /prod/dokploy/public ./public
COPY --from=build /prod/dokploy/package.json ./package.json
COPY --from=build /prod/dokploy/drizzle ./drizzle
Expand Down
1 change: 0 additions & 1 deletion Dockerfile.cloud
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ RUN apt-get update && apt-get install -y curl unzip apache2-utils && rm -rf /var
COPY --from=build /prod/dokploy/.next ./.next
COPY --from=build /prod/dokploy/dist ./dist
COPY --from=build /prod/dokploy/next.config.mjs ./next.config.mjs
COPY --from=build /prod/dokploy/next-i18next.config.cjs ./next-i18next.config.cjs
COPY --from=build /prod/dokploy/public ./public
COPY --from=build /prod/dokploy/package.json ./package.json
COPY --from=build /prod/dokploy/drizzle ./drizzle
Expand Down
8 changes: 4 additions & 4 deletions LICENSE.MD
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ See the License for the specific language governing permissions and limitations

## Additional Terms for Specific Features

The following additional terms apply to the multi-node support, Docker Compose file and Multi Server features of Dokploy. In the event of a conflict, these provisions shall take precedence over those in the Apache License:
The following additional terms apply to the multi-node support, Docker Compose file, Preview Deployments and Multi Server features of Dokploy. In the event of a conflict, these provisions shall take precedence over those in the Apache License:

- **Self-Hosted Version Free**: All features of Dokploy, including multi-node support, Docker Compose file support and Multi Server, will always be free to use in the self-hosted version.
- **Restriction on Resale**: The multi-node support, Docker Compose file support and Multi Server features cannot be sold or offered as a service by any party other than the copyright holder without prior written consent.
- **Modification Distribution**: Any modifications to the multi-node support, Docker Compose file support and Multi Server features must be distributed freely and cannot be sold or offered as a service.
- **Self-Hosted Version Free**: All features of Dokploy, including multi-node support, Docker Compose file support, Preview Deployments and Multi Server, will always be free to use in the self-hosted version.
- **Restriction on Resale**: The multi-node support, Docker Compose file support, Preview Deployments and Multi Server features cannot be sold or offered as a service by any party other than the copyright holder without prior written consent.
- **Modification Distribution**: Any modifications to the multi-node support, Docker Compose file support, Preview Deployments and Multi Server features must be distributed freely and cannot be sold or offered as a service.

For further inquiries or permissions, please contact us directly.
10 changes: 10 additions & 0 deletions apps/api/src/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ export const deployJobSchema = z.discriminatedUnion("applicationType", [
applicationType: z.literal("compose"),
serverId: z.string().min(1),
}),
z.object({
applicationId: z.string(),
previewDeploymentId: z.string(),
titleLog: z.string(),
descriptionLog: z.string(),
server: z.boolean().optional(),
type: z.enum(["deploy"]),
applicationType: z.literal("application-preview"),
serverId: z.string().min(1),
}),
]);

export type DeployJob = z.infer<typeof deployJobSchema>;
20 changes: 20 additions & 0 deletions apps/api/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import {
deployRemoteApplication,
deployRemoteCompose,
deployRemotePreviewApplication,
rebuildRemoteApplication,
rebuildRemoteCompose,
updateApplicationStatus,
updateCompose,
updatePreviewDeployment,
} from "@dokploy/server";
import type { DeployJob } from "./schema";

Expand Down Expand Up @@ -47,6 +49,20 @@ export const deploy = async (job: DeployJob) => {
});
}
}
} else if (job.applicationType === "application-preview") {
await updatePreviewDeployment(job.previewDeploymentId, {
previewStatus: "running",
});
if (job.server) {
if (job.type === "deploy") {
await deployRemotePreviewApplication({
applicationId: job.applicationId,
titleLog: job.titleLog,
descriptionLog: job.descriptionLog,
previewDeploymentId: job.previewDeploymentId,
});
}
}
}
} catch (error) {
if (job.applicationType === "application") {
Expand All @@ -55,6 +71,10 @@ export const deploy = async (job: DeployJob) => {
await updateCompose(job.composeId, {
composeStatus: "error",
});
} else if (job.applicationType === "application-preview") {
await updatePreviewDeployment(job.previewDeploymentId, {
previewStatus: "error",
});
}
}

Expand Down
8 changes: 4 additions & 4 deletions apps/dokploy/LICENSE.MD
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ See the License for the specific language governing permissions and limitations

## Additional Terms for Specific Features

The following additional terms apply to the multi-node support, Docker Compose file and Multi Server features of Dokploy. In the event of a conflict, these provisions shall take precedence over those in the Apache License:
The following additional terms apply to the multi-node support, Docker Compose file, Preview Deployments and Multi Server features of Dokploy. In the event of a conflict, these provisions shall take precedence over those in the Apache License:

- **Self-Hosted Version Free**: All features of Dokploy, including multi-node support, Docker Compose file support and Multi Server, will always be free to use in the self-hosted version.
- **Restriction on Resale**: The multi-node support, Docker Compose file support and Multi Server features cannot be sold or offered as a service by any party other than the copyright holder without prior written consent.
- **Modification Distribution**: Any modifications to the multi-node support, Docker Compose file support and Multi Server features must be distributed freely and cannot be sold or offered as a service.
- **Self-Hosted Version Free**: All features of Dokploy, including multi-node support, Docker Compose file support, Preview Deployments and Multi Server, will always be free to use in the self-hosted version.
- **Restriction on Resale**: The multi-node support, Docker Compose file support, Preview Deployments and Multi Server features cannot be sold or offered as a service by any party other than the copyright holder without prior written consent.
- **Modification Distribution**: Any modifications to the multi-node support, Docker Compose file support, Preview Deployments and Multi Server features must be distributed freely and cannot be sold or offered as a service.

For further inquiries or permissions, please contact us directly.
1 change: 1 addition & 0 deletions apps/dokploy/__test__/compose/domain/labels.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ describe("createDomainLabels", () => {
domainId: "",
path: "/",
createdAt: "",
previewDeploymentId: "",
};

it("should create basic labels for web entrypoint", async () => {
Expand Down
10 changes: 10 additions & 0 deletions apps/dokploy/__test__/drop/drop.test.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,23 @@ if (typeof window === "undefined") {

const baseApp: ApplicationNested = {
applicationId: "",
herokuVersion: "",
applicationStatus: "done",
appName: "",
autoDeploy: true,
serverId: "",
registryUrl: "",
branch: null,
dockerBuildStage: "",
isPreviewDeploymentsActive: false,
previewBuildArgs: null,
previewCertificateType: "none",
previewEnv: null,
previewHttps: false,
previewPath: "/",
previewPort: 3000,
previewLimit: 0,
previewWildcard: "",
project: {
env: "",
adminId: "",
Expand Down
11 changes: 11 additions & 0 deletions apps/dokploy/__test__/traefik/traefik.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { expect, test } from "vitest";

const baseApp: ApplicationNested = {
applicationId: "",
herokuVersion: "",
applicationStatus: "done",
appName: "",
autoDeploy: true,
Expand All @@ -14,6 +15,15 @@ const baseApp: ApplicationNested = {
dockerBuildStage: "",
registryUrl: "",
buildArgs: null,
isPreviewDeploymentsActive: false,
previewBuildArgs: null,
previewCertificateType: "none",
previewEnv: null,
previewHttps: false,
previewPath: "/",
previewPort: 3000,
previewLimit: 0,
previewWildcard: "",
project: {
env: "",
adminId: "",
Expand Down Expand Up @@ -95,6 +105,7 @@ const baseDomain: Domain = {
composeId: "",
domainType: "application",
uniqueConfigKey: 1,
previewDeploymentId: "",
};

const baseRedirect: Redirect = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { CodeEditor } from "@/components/shared/code-editor";
import { Button } from "@/components/ui/button";
import {
Dialog,
Expand All @@ -18,7 +19,6 @@ import {
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
import { Textarea } from "@/components/ui/textarea";
import { cn } from "@/lib/utils";
import { api } from "@/utils/api";
import { zodResolver } from "@hookform/resolvers/zod";
Expand Down Expand Up @@ -150,7 +150,7 @@ export const AddVolumes = ({
<DialogTrigger className="" asChild>
<Button>{children}</Button>
</DialogTrigger>
<DialogContent className="max-h-screen overflow-y-auto sm:max-w-2xl">
<DialogContent className="max-h-screen overflow-y-auto sm:max-w-3xl">
<DialogHeader>
<DialogTitle>Volumes / Mounts</DialogTitle>
</DialogHeader>
Expand Down Expand Up @@ -303,9 +303,12 @@ export const AddVolumes = ({
<FormLabel>Content</FormLabel>
<FormControl>
<FormControl>
<Textarea
placeholder="Any content"
className="h-64"
<CodeEditor
language="properties"
placeholder={`NODE_ENV=production
PORT=3000
`}
className="h-96 font-mono"
{...field}
/>
</FormControl>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { AlertBlock } from "@/components/shared/alert-block";
import { CodeEditor } from "@/components/shared/code-editor";
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogClose,
DialogContent,
DialogDescription,
DialogFooter,
Expand All @@ -19,7 +19,6 @@ import {
FormMessage,
} from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { Textarea } from "@/components/ui/textarea";
import { api } from "@/utils/api";
import { zodResolver } from "@hookform/resolvers/zod";
import { Pencil } from "lucide-react";
Expand Down Expand Up @@ -119,7 +118,7 @@ export const UpdateVolume = ({
} else if (typeForm === "file") {
form.reset({
content: data.content || "",
mountPath: "/",
mountPath: serviceType === "compose" ? "/" : data.mountPath,
filePath: data.filePath || "",
type: "file",
});
Expand Down Expand Up @@ -182,7 +181,7 @@ export const UpdateVolume = ({
<Pencil className="size-4 text-muted-foreground" />
</Button>
</DialogTrigger>
<DialogContent className="max-h-screen overflow-y-auto sm:max-w-lg">
<DialogContent className="max-h-screen overflow-y-auto sm:max-w-3xl">
<DialogHeader>
<DialogTitle>Update</DialogTitle>
<DialogDescription>Update the mount</DialogDescription>
Expand Down Expand Up @@ -247,9 +246,12 @@ export const UpdateVolume = ({
<FormLabel>Content</FormLabel>
<FormControl>
<FormControl>
<Textarea
placeholder="Any content"
className="h-64"
<CodeEditor
language="properties"
placeholder={`NODE_ENV=production
PORT=3000
`}
className="h-96 font-mono"
{...field}
/>
</FormControl>
Expand Down
32 changes: 32 additions & 0 deletions apps/dokploy/components/dashboard/application/build/show.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ const mySchema = z.discriminatedUnion("buildType", [
}),
z.object({
buildType: z.literal("heroku_buildpacks"),
herokuVersion: z.string().nullable().default(""),
}),
z.object({
buildType: z.literal("paketo_buildpacks"),
Expand Down Expand Up @@ -90,6 +91,13 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => {
dockerBuildStage: data.dockerBuildStage || "",
}),
});
} else if (data.buildType === "heroku_buildpacks") {
form.reset({
buildType: data.buildType,
...(data.buildType && {
herokuVersion: data.herokuVersion || "",
}),
});
} else {
form.reset({
buildType: data.buildType,
Expand All @@ -110,6 +118,8 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => {
data.buildType === "dockerfile" ? data.dockerContextPath : null,
dockerBuildStage:
data.buildType === "dockerfile" ? data.dockerBuildStage : null,
herokuVersion:
data.buildType === "heroku_buildpacks" ? data.herokuVersion : null,
})
.then(async () => {
toast.success("Build type saved");
Expand Down Expand Up @@ -200,6 +210,28 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => {
);
}}
/>
{buildType === "heroku_buildpacks" && (
<FormField
control={form.control}
name="herokuVersion"
render={({ field }) => {
return (
<FormItem>
<FormLabel>Heroku Version (Optional)</FormLabel>
<FormControl>
<Input
placeholder={"Heroku Version (Default: 24)"}
{...field}
value={field.value ?? ""}
/>
</FormControl>

<FormMessage />
</FormItem>
);
}}
/>
)}
{buildType === "dockerfile" && (
<>
<FormField
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export const ShowDeployments = ({ applicationId }: Props) => {
refetchInterval: 1000,
},
);

const [url, setUrl] = React.useState("");
useEffect(() => {
setUrl(document.location.origin);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export const ShowEnvironment = ({ applicationId }: Props) => {
onSubmit={form.handleSubmit(onSubmit)}
className="flex w-full flex-col gap-5 "
>
<Card className="bg-background">
<Card className="bg-background p-6">
<Secrets
name="env"
title="Environment Settings"
Expand Down
Loading
Loading