- {additionalPorts.map((port, index) => (
-
-
-
- {
- const newPorts = [...additionalPorts];
- if (newPorts[index]) {
- newPorts[index].targetPort = Number.parseInt(
- e.target.value,
- );
- }
-
- setAdditionalPorts(newPorts);
- }}
- className="w-full rounded border p-2"
- />
-
-
-
- {
- const newPorts = [...additionalPorts];
- if (newPorts[index]) {
- newPorts[index].publishedPort = Number.parseInt(
- e.target.value,
- );
- }
- setAdditionalPorts(newPorts);
- }}
- className="w-full rounded border p-2"
- />
-
-
-
-
-
-
-
-
+
+ {additionalPorts.length === 0 ? (
+
+
+
+ No port mappings configured
+
+
+ Add one to get started
+
- ))}
-
-
+ ) : (
+
+ {additionalPorts.map((port, index) => (
+
+
+
+
+ {
+ const newPorts = [...additionalPorts];
+ if (newPorts[index]) {
+ newPorts[index].targetPort = Number.parseInt(
+ e.target.value,
+ );
+ }
+ setAdditionalPorts(newPorts);
+ }}
+ className="w-full dark:bg-black"
+ placeholder="e.g. 8080"
+ />
+
+
+
+
+ {
+ const newPorts = [...additionalPorts];
+ if (newPorts[index]) {
+ newPorts[index].publishedPort = Number.parseInt(
+ e.target.value,
+ );
+ }
+ setAdditionalPorts(newPorts);
+ }}
+ className="w-full dark:bg-black"
+ placeholder="e.g. 80"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+ ))}
+
+ )}
+
+ {additionalPorts.length > 0 && (
+
+
+
+
+ Each port mapping defines how external traffic reaches
+ your containers.
+
+
+ -
+ Host Mode: Directly binds the port to
+ the host machine.
+
+ -
+ Best for single-node deployments or when you need
+ guaranteed port availability.
+
+
+
+ -
+ Ingress Mode: Routes through Docker
+ Swarm's load balancer.
+
+ -
+ Recommended for multi-node deployments and better
+ scalability.
+
+
+
+
+
+
+
+ )}
+
+
+
+ {(additionalPorts.length > 0 || isDirty) && (
-
-
+ )}
+
>
);
};
+
+export default ManageTraefikPorts;
diff --git a/apps/dokploy/public/locales/en/settings.json b/apps/dokploy/public/locales/en/settings.json
index 1ce54692..39af4178 100644
--- a/apps/dokploy/public/locales/en/settings.json
+++ b/apps/dokploy/public/locales/en/settings.json
@@ -17,8 +17,8 @@
"settings.server.webServer.updateServerIp": "Update Server IP",
"settings.server.webServer.server.label": "Server",
"settings.server.webServer.traefik.label": "Traefik",
- "settings.server.webServer.traefik.modifyEnv": "Modify Env",
- "settings.server.webServer.traefik.managePorts": "Additional Ports",
+ "settings.server.webServer.traefik.modifyEnv": "Modify Environment",
+ "settings.server.webServer.traefik.managePorts": "Additional Port Mappings",
"settings.server.webServer.traefik.managePortsDescription": "Add or remove additional ports for Traefik",
"settings.server.webServer.traefik.targetPort": "Target Port",
"settings.server.webServer.traefik.publishedPort": "Published Port",