diff --git a/apps/dokploy/__test__/compose/domain/labels.test.ts b/apps/dokploy/__test__/compose/domain/labels.test.ts index 4123b2877..8b5c2f9c4 100644 --- a/apps/dokploy/__test__/compose/domain/labels.test.ts +++ b/apps/dokploy/__test__/compose/domain/labels.test.ts @@ -26,7 +26,6 @@ describe("createDomainLabels", () => { "traefik.http.routers.test-app-1-web.entrypoints=web", "traefik.http.services.test-app-1-web.loadbalancer.server.port=8080", "traefik.http.routers.test-app-1-web.service=test-app-1-web", - "traefik.http.routers.test-app-1-web.rule=PathPrefix(`/`)", ]); }); @@ -37,21 +36,21 @@ describe("createDomainLabels", () => { "traefik.http.routers.test-app-1-websecure.entrypoints=websecure", "traefik.http.services.test-app-1-websecure.loadbalancer.server.port=8080", "traefik.http.routers.test-app-1-websecure.service=test-app-1-websecure", - "traefik.http.routers.test-app-1-websecure.rule=PathPrefix(`/`)", ]); }); - it("shouldn't add the path prefix if is empty", async () => { + it("should add the path prefix if is different than / empty", async () => { const labels = await createDomainLabels( appName, { ...baseDomain, - path: "", + path: "/hello", }, "websecure", ); + expect(labels).toEqual([ - "traefik.http.routers.test-app-1-websecure.rule=Host(`example.com`)", + "traefik.http.routers.test-app-1-websecure.rule=Host(`example.com`) && PathPrefix(`/hello`)", "traefik.http.routers.test-app-1-websecure.entrypoints=websecure", "traefik.http.services.test-app-1-websecure.loadbalancer.server.port=8080", "traefik.http.routers.test-app-1-websecure.service=test-app-1-websecure", diff --git a/apps/dokploy/package.json b/apps/dokploy/package.json index 9573eee5d..ebee5cac0 100644 --- a/apps/dokploy/package.json +++ b/apps/dokploy/package.json @@ -1,6 +1,6 @@ { "name": "dokploy", - "version": "v0.11.0", + "version": "v0.11.1", "private": true, "license": "Apache-2.0", "type": "module", diff --git a/packages/server/src/utils/docker/domain.ts b/packages/server/src/utils/docker/domain.ts index a065f31c0..69bfa222a 100644 --- a/packages/server/src/utils/docker/domain.ts +++ b/packages/server/src/utils/docker/domain.ts @@ -259,21 +259,15 @@ export const createDomainLabels = async ( domain: Domain, entrypoint: "web" | "websecure", ) => { - const { host, port, https, uniqueConfigKey, certificateType } = domain; + const { host, port, https, uniqueConfigKey, certificateType, path } = domain; const routerName = `${appName}-${uniqueConfigKey}-${entrypoint}`; const labels = [ - `traefik.http.routers.${routerName}.rule=Host(\`${host}\`)`, + `traefik.http.routers.${routerName}.rule=Host(\`${host}\`)${path && path !== "/" ? ` && PathPrefix(\`${path}\`)` : ""}`, `traefik.http.routers.${routerName}.entrypoints=${entrypoint}`, `traefik.http.services.${routerName}.loadbalancer.server.port=${port}`, `traefik.http.routers.${routerName}.service=${routerName}`, ]; - if (domain.path) { - labels.push( - `traefik.http.routers.${routerName}.rule=PathPrefix(\`${domain.path}\`)`, - ); - } - if (entrypoint === "web" && https) { labels.push( `traefik.http.routers.${routerName}.middlewares=redirect-to-https@file`,