Files
pulumi-dokploy/sdk/python/pulumi_dokploy/domain.py
T
max-voitcov 73386ba0ff
build / build (push) Failing after 11m22s
release / plugin (push) Failing after 31m35s
release / sdks (push) Has been skipped
Bridge what Dokploy v0.30 added, and let the docs through
Six new resources from terraform-provider-dokploy v0.2.0 -- Network,
DnsProvider, VaultProvider, Schedule, VolumeBackup and Libsql -- plus the new
properties on Domain (`enabled`), Compose (`serviceNetworks`, `createEnvFile`,
`icon`) and Application. Verified with `pulumi up` against a live v0.30.2
instance: create, preview-clean, and destroy.

The upstream provider also now refuses a volume Mount with no `volumeName`,
which Dokploy would otherwise turn into an anonymous Docker volume recreated
on every deploy. That surfaces here at preview time, before anything exists.

Two things made that fix nearly invisible to Pulumi users, so this commit
fixes the second one: the bridge resolves the upstream `docs/` through the Go
module cache, where a locally `replace`d dependency never lands, so tfgen was
emitting every resource with no description at all. UpstreamRepoPath now
points at the checkout and all 445 inputs carry documentation -- with names
rendered per language, so Python readers see `volume_name` where TypeScript
readers see `volumeName`.
2026-08-26 00:46:32 +03:00

941 lines
45 KiB
Python
Generated

# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***
import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
from typing import NotRequired, TypedDict, TypeAlias
else:
from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities
__all__ = ['DomainArgs', 'Domain']
@pulumi.input_type
class DomainArgs:
def __init__(__self__, *,
host: pulumi.Input[_builtins.str],
application_id: pulumi.Input[Optional[_builtins.str]] = None,
certificate_type: pulumi.Input[Optional[_builtins.str]] = None,
compose_id: pulumi.Input[Optional[_builtins.str]] = None,
custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None,
custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None,
domain_type: pulumi.Input[Optional[_builtins.str]] = None,
enabled: pulumi.Input[Optional[_builtins.bool]] = None,
forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None,
https: pulumi.Input[Optional[_builtins.bool]] = None,
internal_path: pulumi.Input[Optional[_builtins.str]] = None,
middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: pulumi.Input[Optional[_builtins.str]] = None,
port: pulumi.Input[Optional[_builtins.int]] = None,
preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None,
service_name: pulumi.Input[Optional[_builtins.str]] = None,
strip_path: pulumi.Input[Optional[_builtins.bool]] = None):
"""
The set of arguments for constructing a Domain resource.
:param pulumi.Input[_builtins.str] host: Fully-qualified hostname, for example `api.example.com`.
:param pulumi.Input[_builtins.str] application_id: Application this domain routes to.
:param pulumi.Input[_builtins.str] certificate_type: How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
:param pulumi.Input[_builtins.str] compose_id: Compose stack this domain routes to.
:param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`.
:param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults.
:param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
:param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.
:param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth.
:param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it.
:param pulumi.Input[_builtins.str] internal_path: Path the request is rewritten to before it reaches the container, defaults to `/`.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] middlewares: Names of Traefik middlewares to apply.
:param pulumi.Input[_builtins.str] path: Path prefix this domain routes, defaults to `/`.
:param pulumi.Input[_builtins.int] port: Container port that receives the traffic, defaults to `3000`.
:param pulumi.Input[_builtins.str] preview_deployment_id: Preview deployment this domain routes to.
:param pulumi.Input[_builtins.str] service_name: Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set.
:param pulumi.Input[_builtins.bool] strip_path: Strip `path` from the request before forwarding it.
"""
pulumi.set(__self__, "host", host)
if application_id is not None:
pulumi.set(__self__, "application_id", application_id)
if certificate_type is not None:
pulumi.set(__self__, "certificate_type", certificate_type)
if compose_id is not None:
pulumi.set(__self__, "compose_id", compose_id)
if custom_cert_resolver is not None:
pulumi.set(__self__, "custom_cert_resolver", custom_cert_resolver)
if custom_entrypoint is not None:
pulumi.set(__self__, "custom_entrypoint", custom_entrypoint)
if domain_type is not None:
pulumi.set(__self__, "domain_type", domain_type)
if enabled is not None:
pulumi.set(__self__, "enabled", enabled)
if forward_auth_enabled is not None:
pulumi.set(__self__, "forward_auth_enabled", forward_auth_enabled)
if https is not None:
pulumi.set(__self__, "https", https)
if internal_path is not None:
pulumi.set(__self__, "internal_path", internal_path)
if middlewares is not None:
pulumi.set(__self__, "middlewares", middlewares)
if path is not None:
pulumi.set(__self__, "path", path)
if port is not None:
pulumi.set(__self__, "port", port)
if preview_deployment_id is not None:
pulumi.set(__self__, "preview_deployment_id", preview_deployment_id)
if service_name is not None:
pulumi.set(__self__, "service_name", service_name)
if strip_path is not None:
pulumi.set(__self__, "strip_path", strip_path)
@_builtins.property
@pulumi.getter
def host(self) -> pulumi.Input[_builtins.str]:
"""
Fully-qualified hostname, for example `api.example.com`.
"""
return pulumi.get(self, "host")
@host.setter
def host(self, value: pulumi.Input[_builtins.str]):
pulumi.set(self, "host", value)
@_builtins.property
@pulumi.getter(name="applicationId")
def application_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Application this domain routes to.
"""
return pulumi.get(self, "application_id")
@application_id.setter
def application_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "application_id", value)
@_builtins.property
@pulumi.getter(name="certificateType")
def certificate_type(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
"""
return pulumi.get(self, "certificate_type")
@certificate_type.setter
def certificate_type(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "certificate_type", value)
@_builtins.property
@pulumi.getter(name="composeId")
def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Compose stack this domain routes to.
"""
return pulumi.get(self, "compose_id")
@compose_id.setter
def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "compose_id", value)
@_builtins.property
@pulumi.getter(name="customCertResolver")
def custom_cert_resolver(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Traefik certificate resolver name, when `certificate_type` is `custom`.
"""
return pulumi.get(self, "custom_cert_resolver")
@custom_cert_resolver.setter
def custom_cert_resolver(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "custom_cert_resolver", value)
@_builtins.property
@pulumi.getter(name="customEntrypoint")
def custom_entrypoint(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Traefik entrypoint to bind, when not using the defaults.
"""
return pulumi.get(self, "custom_entrypoint")
@custom_entrypoint.setter
def custom_entrypoint(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "custom_entrypoint", value)
@_builtins.property
@pulumi.getter(name="domainType")
def domain_type(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
"""
return pulumi.get(self, "domain_type")
@domain_type.setter
def domain_type(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "domain_type", value)
@_builtins.property
@pulumi.getter
def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.
"""
return pulumi.get(self, "enabled")
@enabled.setter
def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "enabled", value)
@_builtins.property
@pulumi.getter(name="forwardAuthEnabled")
def forward_auth_enabled(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Protect this domain with Dokploy's forward auth.
"""
return pulumi.get(self, "forward_auth_enabled")
@forward_auth_enabled.setter
def forward_auth_enabled(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "forward_auth_enabled", value)
@_builtins.property
@pulumi.getter
def https(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Serve the domain over HTTPS and redirect HTTP traffic to it.
"""
return pulumi.get(self, "https")
@https.setter
def https(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "https", value)
@_builtins.property
@pulumi.getter(name="internalPath")
def internal_path(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Path the request is rewritten to before it reaches the container, defaults to `/`.
"""
return pulumi.get(self, "internal_path")
@internal_path.setter
def internal_path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "internal_path", value)
@_builtins.property
@pulumi.getter
def middlewares(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]:
"""
Names of Traefik middlewares to apply.
"""
return pulumi.get(self, "middlewares")
@middlewares.setter
def middlewares(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]):
pulumi.set(self, "middlewares", value)
@_builtins.property
@pulumi.getter
def path(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Path prefix this domain routes, defaults to `/`.
"""
return pulumi.get(self, "path")
@path.setter
def path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "path", value)
@_builtins.property
@pulumi.getter
def port(self) -> pulumi.Input[Optional[_builtins.int]]:
"""
Container port that receives the traffic, defaults to `3000`.
"""
return pulumi.get(self, "port")
@port.setter
def port(self, value: pulumi.Input[Optional[_builtins.int]]):
pulumi.set(self, "port", value)
@_builtins.property
@pulumi.getter(name="previewDeploymentId")
def preview_deployment_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Preview deployment this domain routes to.
"""
return pulumi.get(self, "preview_deployment_id")
@preview_deployment_id.setter
def preview_deployment_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "preview_deployment_id", value)
@_builtins.property
@pulumi.getter(name="serviceName")
def service_name(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set.
"""
return pulumi.get(self, "service_name")
@service_name.setter
def service_name(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "service_name", value)
@_builtins.property
@pulumi.getter(name="stripPath")
def strip_path(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Strip `path` from the request before forwarding it.
"""
return pulumi.get(self, "strip_path")
@strip_path.setter
def strip_path(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "strip_path", value)
@pulumi.input_type
class _DomainState:
def __init__(__self__, *,
application_id: pulumi.Input[Optional[_builtins.str]] = None,
certificate_type: pulumi.Input[Optional[_builtins.str]] = None,
compose_id: pulumi.Input[Optional[_builtins.str]] = None,
created_at: pulumi.Input[Optional[_builtins.str]] = None,
custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None,
custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None,
domain_type: pulumi.Input[Optional[_builtins.str]] = None,
enabled: pulumi.Input[Optional[_builtins.bool]] = None,
forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None,
host: pulumi.Input[Optional[_builtins.str]] = None,
https: pulumi.Input[Optional[_builtins.bool]] = None,
internal_path: pulumi.Input[Optional[_builtins.str]] = None,
middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: pulumi.Input[Optional[_builtins.str]] = None,
port: pulumi.Input[Optional[_builtins.int]] = None,
preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None,
service_name: pulumi.Input[Optional[_builtins.str]] = None,
strip_path: pulumi.Input[Optional[_builtins.bool]] = None):
"""
Input properties used for looking up and filtering Domain resources.
:param pulumi.Input[_builtins.str] application_id: Application this domain routes to.
:param pulumi.Input[_builtins.str] certificate_type: How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
:param pulumi.Input[_builtins.str] compose_id: Compose stack this domain routes to.
:param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the domain was created.
:param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`.
:param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults.
:param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
:param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.
:param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth.
:param pulumi.Input[_builtins.str] host: Fully-qualified hostname, for example `api.example.com`.
:param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it.
:param pulumi.Input[_builtins.str] internal_path: Path the request is rewritten to before it reaches the container, defaults to `/`.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] middlewares: Names of Traefik middlewares to apply.
:param pulumi.Input[_builtins.str] path: Path prefix this domain routes, defaults to `/`.
:param pulumi.Input[_builtins.int] port: Container port that receives the traffic, defaults to `3000`.
:param pulumi.Input[_builtins.str] preview_deployment_id: Preview deployment this domain routes to.
:param pulumi.Input[_builtins.str] service_name: Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set.
:param pulumi.Input[_builtins.bool] strip_path: Strip `path` from the request before forwarding it.
"""
if application_id is not None:
pulumi.set(__self__, "application_id", application_id)
if certificate_type is not None:
pulumi.set(__self__, "certificate_type", certificate_type)
if compose_id is not None:
pulumi.set(__self__, "compose_id", compose_id)
if created_at is not None:
pulumi.set(__self__, "created_at", created_at)
if custom_cert_resolver is not None:
pulumi.set(__self__, "custom_cert_resolver", custom_cert_resolver)
if custom_entrypoint is not None:
pulumi.set(__self__, "custom_entrypoint", custom_entrypoint)
if domain_type is not None:
pulumi.set(__self__, "domain_type", domain_type)
if enabled is not None:
pulumi.set(__self__, "enabled", enabled)
if forward_auth_enabled is not None:
pulumi.set(__self__, "forward_auth_enabled", forward_auth_enabled)
if host is not None:
pulumi.set(__self__, "host", host)
if https is not None:
pulumi.set(__self__, "https", https)
if internal_path is not None:
pulumi.set(__self__, "internal_path", internal_path)
if middlewares is not None:
pulumi.set(__self__, "middlewares", middlewares)
if path is not None:
pulumi.set(__self__, "path", path)
if port is not None:
pulumi.set(__self__, "port", port)
if preview_deployment_id is not None:
pulumi.set(__self__, "preview_deployment_id", preview_deployment_id)
if service_name is not None:
pulumi.set(__self__, "service_name", service_name)
if strip_path is not None:
pulumi.set(__self__, "strip_path", strip_path)
@_builtins.property
@pulumi.getter(name="applicationId")
def application_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Application this domain routes to.
"""
return pulumi.get(self, "application_id")
@application_id.setter
def application_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "application_id", value)
@_builtins.property
@pulumi.getter(name="certificateType")
def certificate_type(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
"""
return pulumi.get(self, "certificate_type")
@certificate_type.setter
def certificate_type(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "certificate_type", value)
@_builtins.property
@pulumi.getter(name="composeId")
def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Compose stack this domain routes to.
"""
return pulumi.get(self, "compose_id")
@compose_id.setter
def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "compose_id", value)
@_builtins.property
@pulumi.getter(name="createdAt")
def created_at(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
RFC 3339 timestamp of when the domain was created.
"""
return pulumi.get(self, "created_at")
@created_at.setter
def created_at(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "created_at", value)
@_builtins.property
@pulumi.getter(name="customCertResolver")
def custom_cert_resolver(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Traefik certificate resolver name, when `certificate_type` is `custom`.
"""
return pulumi.get(self, "custom_cert_resolver")
@custom_cert_resolver.setter
def custom_cert_resolver(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "custom_cert_resolver", value)
@_builtins.property
@pulumi.getter(name="customEntrypoint")
def custom_entrypoint(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Traefik entrypoint to bind, when not using the defaults.
"""
return pulumi.get(self, "custom_entrypoint")
@custom_entrypoint.setter
def custom_entrypoint(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "custom_entrypoint", value)
@_builtins.property
@pulumi.getter(name="domainType")
def domain_type(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
"""
return pulumi.get(self, "domain_type")
@domain_type.setter
def domain_type(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "domain_type", value)
@_builtins.property
@pulumi.getter
def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.
"""
return pulumi.get(self, "enabled")
@enabled.setter
def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "enabled", value)
@_builtins.property
@pulumi.getter(name="forwardAuthEnabled")
def forward_auth_enabled(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Protect this domain with Dokploy's forward auth.
"""
return pulumi.get(self, "forward_auth_enabled")
@forward_auth_enabled.setter
def forward_auth_enabled(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "forward_auth_enabled", value)
@_builtins.property
@pulumi.getter
def host(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Fully-qualified hostname, for example `api.example.com`.
"""
return pulumi.get(self, "host")
@host.setter
def host(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "host", value)
@_builtins.property
@pulumi.getter
def https(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Serve the domain over HTTPS and redirect HTTP traffic to it.
"""
return pulumi.get(self, "https")
@https.setter
def https(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "https", value)
@_builtins.property
@pulumi.getter(name="internalPath")
def internal_path(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Path the request is rewritten to before it reaches the container, defaults to `/`.
"""
return pulumi.get(self, "internal_path")
@internal_path.setter
def internal_path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "internal_path", value)
@_builtins.property
@pulumi.getter
def middlewares(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]:
"""
Names of Traefik middlewares to apply.
"""
return pulumi.get(self, "middlewares")
@middlewares.setter
def middlewares(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]):
pulumi.set(self, "middlewares", value)
@_builtins.property
@pulumi.getter
def path(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Path prefix this domain routes, defaults to `/`.
"""
return pulumi.get(self, "path")
@path.setter
def path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "path", value)
@_builtins.property
@pulumi.getter
def port(self) -> pulumi.Input[Optional[_builtins.int]]:
"""
Container port that receives the traffic, defaults to `3000`.
"""
return pulumi.get(self, "port")
@port.setter
def port(self, value: pulumi.Input[Optional[_builtins.int]]):
pulumi.set(self, "port", value)
@_builtins.property
@pulumi.getter(name="previewDeploymentId")
def preview_deployment_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Preview deployment this domain routes to.
"""
return pulumi.get(self, "preview_deployment_id")
@preview_deployment_id.setter
def preview_deployment_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "preview_deployment_id", value)
@_builtins.property
@pulumi.getter(name="serviceName")
def service_name(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set.
"""
return pulumi.get(self, "service_name")
@service_name.setter
def service_name(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "service_name", value)
@_builtins.property
@pulumi.getter(name="stripPath")
def strip_path(self) -> pulumi.Input[Optional[_builtins.bool]]:
"""
Strip `path` from the request before forwarding it.
"""
return pulumi.get(self, "strip_path")
@strip_path.setter
def strip_path(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "strip_path", value)
@pulumi.type_token("dokploy:index/domain:Domain")
class Domain(pulumi.CustomResource):
@overload
def __init__(__self__,
resource_name: str,
opts: Optional[pulumi.ResourceOptions] = None,
application_id: pulumi.Input[Optional[_builtins.str]] = None,
certificate_type: pulumi.Input[Optional[_builtins.str]] = None,
compose_id: pulumi.Input[Optional[_builtins.str]] = None,
custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None,
custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None,
domain_type: pulumi.Input[Optional[_builtins.str]] = None,
enabled: pulumi.Input[Optional[_builtins.bool]] = None,
forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None,
host: pulumi.Input[Optional[_builtins.str]] = None,
https: pulumi.Input[Optional[_builtins.bool]] = None,
internal_path: pulumi.Input[Optional[_builtins.str]] = None,
middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: pulumi.Input[Optional[_builtins.str]] = None,
port: pulumi.Input[Optional[_builtins.int]] = None,
preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None,
service_name: pulumi.Input[Optional[_builtins.str]] = None,
strip_path: pulumi.Input[Optional[_builtins.bool]] = None,
__props__=None):
"""
A domain routed to an application or a Compose service through Dokploy's Traefik instance.
Set exactly one of `application_id` or `compose_id`. When targeting a Compose stack, `service_name` selects which service in the stack receives the traffic.
:param str resource_name: The name of the resource.
:param pulumi.ResourceOptions opts: Options for the resource.
:param pulumi.Input[_builtins.str] application_id: Application this domain routes to.
:param pulumi.Input[_builtins.str] certificate_type: How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
:param pulumi.Input[_builtins.str] compose_id: Compose stack this domain routes to.
:param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`.
:param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults.
:param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
:param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.
:param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth.
:param pulumi.Input[_builtins.str] host: Fully-qualified hostname, for example `api.example.com`.
:param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it.
:param pulumi.Input[_builtins.str] internal_path: Path the request is rewritten to before it reaches the container, defaults to `/`.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] middlewares: Names of Traefik middlewares to apply.
:param pulumi.Input[_builtins.str] path: Path prefix this domain routes, defaults to `/`.
:param pulumi.Input[_builtins.int] port: Container port that receives the traffic, defaults to `3000`.
:param pulumi.Input[_builtins.str] preview_deployment_id: Preview deployment this domain routes to.
:param pulumi.Input[_builtins.str] service_name: Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set.
:param pulumi.Input[_builtins.bool] strip_path: Strip `path` from the request before forwarding it.
"""
...
@overload
def __init__(__self__,
resource_name: str,
args: DomainArgs,
opts: Optional[pulumi.ResourceOptions] = None):
"""
A domain routed to an application or a Compose service through Dokploy's Traefik instance.
Set exactly one of `application_id` or `compose_id`. When targeting a Compose stack, `service_name` selects which service in the stack receives the traffic.
:param str resource_name: The name of the resource.
:param DomainArgs args: The arguments to use to populate this resource's properties.
:param pulumi.ResourceOptions opts: Options for the resource.
"""
...
def __init__(__self__, resource_name: str, *args, **kwargs):
resource_args, opts = _utilities.get_resource_args_opts(DomainArgs, pulumi.ResourceOptions, *args, **kwargs)
if resource_args is not None:
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
else:
__self__._internal_init(resource_name, *args, **kwargs)
def _internal_init(__self__,
resource_name: str,
opts: Optional[pulumi.ResourceOptions] = None,
application_id: pulumi.Input[Optional[_builtins.str]] = None,
certificate_type: pulumi.Input[Optional[_builtins.str]] = None,
compose_id: pulumi.Input[Optional[_builtins.str]] = None,
custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None,
custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None,
domain_type: pulumi.Input[Optional[_builtins.str]] = None,
enabled: pulumi.Input[Optional[_builtins.bool]] = None,
forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None,
host: pulumi.Input[Optional[_builtins.str]] = None,
https: pulumi.Input[Optional[_builtins.bool]] = None,
internal_path: pulumi.Input[Optional[_builtins.str]] = None,
middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: pulumi.Input[Optional[_builtins.str]] = None,
port: pulumi.Input[Optional[_builtins.int]] = None,
preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None,
service_name: pulumi.Input[Optional[_builtins.str]] = None,
strip_path: pulumi.Input[Optional[_builtins.bool]] = None,
__props__=None):
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
if not isinstance(opts, pulumi.ResourceOptions):
raise TypeError('Expected resource options to be a ResourceOptions instance')
if opts.id is None:
if __props__ is not None:
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
__props__ = DomainArgs.__new__(DomainArgs)
__props__.__dict__["application_id"] = application_id
__props__.__dict__["certificate_type"] = certificate_type
__props__.__dict__["compose_id"] = compose_id
__props__.__dict__["custom_cert_resolver"] = custom_cert_resolver
__props__.__dict__["custom_entrypoint"] = custom_entrypoint
__props__.__dict__["domain_type"] = domain_type
__props__.__dict__["enabled"] = enabled
__props__.__dict__["forward_auth_enabled"] = forward_auth_enabled
if host is None and not opts.urn:
raise TypeError("Missing required property 'host'")
__props__.__dict__["host"] = host
__props__.__dict__["https"] = https
__props__.__dict__["internal_path"] = internal_path
__props__.__dict__["middlewares"] = middlewares
__props__.__dict__["path"] = path
__props__.__dict__["port"] = port
__props__.__dict__["preview_deployment_id"] = preview_deployment_id
__props__.__dict__["service_name"] = service_name
__props__.__dict__["strip_path"] = strip_path
__props__.__dict__["created_at"] = None
super(Domain, __self__).__init__(
'dokploy:index/domain:Domain',
resource_name,
__props__,
opts)
@staticmethod
def get(resource_name: str,
id: pulumi.Input[str],
opts: Optional[pulumi.ResourceOptions] = None,
application_id: pulumi.Input[Optional[_builtins.str]] = None,
certificate_type: pulumi.Input[Optional[_builtins.str]] = None,
compose_id: pulumi.Input[Optional[_builtins.str]] = None,
created_at: pulumi.Input[Optional[_builtins.str]] = None,
custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None,
custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None,
domain_type: pulumi.Input[Optional[_builtins.str]] = None,
enabled: pulumi.Input[Optional[_builtins.bool]] = None,
forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None,
host: pulumi.Input[Optional[_builtins.str]] = None,
https: pulumi.Input[Optional[_builtins.bool]] = None,
internal_path: pulumi.Input[Optional[_builtins.str]] = None,
middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: pulumi.Input[Optional[_builtins.str]] = None,
port: pulumi.Input[Optional[_builtins.int]] = None,
preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None,
service_name: pulumi.Input[Optional[_builtins.str]] = None,
strip_path: pulumi.Input[Optional[_builtins.bool]] = None) -> 'Domain':
"""
Get an existing Domain resource's state with the given name, id, and optional extra
properties used to qualify the lookup.
:param str resource_name: The unique name of the resulting resource.
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
:param pulumi.ResourceOptions opts: Options for the resource.
:param pulumi.Input[_builtins.str] application_id: Application this domain routes to.
:param pulumi.Input[_builtins.str] certificate_type: How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
:param pulumi.Input[_builtins.str] compose_id: Compose stack this domain routes to.
:param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the domain was created.
:param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`.
:param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults.
:param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
:param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.
:param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth.
:param pulumi.Input[_builtins.str] host: Fully-qualified hostname, for example `api.example.com`.
:param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it.
:param pulumi.Input[_builtins.str] internal_path: Path the request is rewritten to before it reaches the container, defaults to `/`.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] middlewares: Names of Traefik middlewares to apply.
:param pulumi.Input[_builtins.str] path: Path prefix this domain routes, defaults to `/`.
:param pulumi.Input[_builtins.int] port: Container port that receives the traffic, defaults to `3000`.
:param pulumi.Input[_builtins.str] preview_deployment_id: Preview deployment this domain routes to.
:param pulumi.Input[_builtins.str] service_name: Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set.
:param pulumi.Input[_builtins.bool] strip_path: Strip `path` from the request before forwarding it.
"""
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
__props__ = _DomainState.__new__(_DomainState)
__props__.__dict__["application_id"] = application_id
__props__.__dict__["certificate_type"] = certificate_type
__props__.__dict__["compose_id"] = compose_id
__props__.__dict__["created_at"] = created_at
__props__.__dict__["custom_cert_resolver"] = custom_cert_resolver
__props__.__dict__["custom_entrypoint"] = custom_entrypoint
__props__.__dict__["domain_type"] = domain_type
__props__.__dict__["enabled"] = enabled
__props__.__dict__["forward_auth_enabled"] = forward_auth_enabled
__props__.__dict__["host"] = host
__props__.__dict__["https"] = https
__props__.__dict__["internal_path"] = internal_path
__props__.__dict__["middlewares"] = middlewares
__props__.__dict__["path"] = path
__props__.__dict__["port"] = port
__props__.__dict__["preview_deployment_id"] = preview_deployment_id
__props__.__dict__["service_name"] = service_name
__props__.__dict__["strip_path"] = strip_path
return Domain(resource_name, opts=opts, __props__=__props__)
@_builtins.property
@pulumi.getter(name="applicationId")
def application_id(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Application this domain routes to.
"""
return pulumi.get(self, "application_id")
@_builtins.property
@pulumi.getter(name="certificateType")
def certificate_type(self) -> pulumi.Output[_builtins.str]:
"""
How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
"""
return pulumi.get(self, "certificate_type")
@_builtins.property
@pulumi.getter(name="composeId")
def compose_id(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Compose stack this domain routes to.
"""
return pulumi.get(self, "compose_id")
@_builtins.property
@pulumi.getter(name="createdAt")
def created_at(self) -> pulumi.Output[_builtins.str]:
"""
RFC 3339 timestamp of when the domain was created.
"""
return pulumi.get(self, "created_at")
@_builtins.property
@pulumi.getter(name="customCertResolver")
def custom_cert_resolver(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Traefik certificate resolver name, when `certificate_type` is `custom`.
"""
return pulumi.get(self, "custom_cert_resolver")
@_builtins.property
@pulumi.getter(name="customEntrypoint")
def custom_entrypoint(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Traefik entrypoint to bind, when not using the defaults.
"""
return pulumi.get(self, "custom_entrypoint")
@_builtins.property
@pulumi.getter(name="domainType")
def domain_type(self) -> pulumi.Output[_builtins.str]:
"""
What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
"""
return pulumi.get(self, "domain_type")
@_builtins.property
@pulumi.getter
def enabled(self) -> pulumi.Output[_builtins.bool]:
"""
Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.
"""
return pulumi.get(self, "enabled")
@_builtins.property
@pulumi.getter(name="forwardAuthEnabled")
def forward_auth_enabled(self) -> pulumi.Output[_builtins.bool]:
"""
Protect this domain with Dokploy's forward auth.
"""
return pulumi.get(self, "forward_auth_enabled")
@_builtins.property
@pulumi.getter
def host(self) -> pulumi.Output[_builtins.str]:
"""
Fully-qualified hostname, for example `api.example.com`.
"""
return pulumi.get(self, "host")
@_builtins.property
@pulumi.getter
def https(self) -> pulumi.Output[_builtins.bool]:
"""
Serve the domain over HTTPS and redirect HTTP traffic to it.
"""
return pulumi.get(self, "https")
@_builtins.property
@pulumi.getter(name="internalPath")
def internal_path(self) -> pulumi.Output[_builtins.str]:
"""
Path the request is rewritten to before it reaches the container, defaults to `/`.
"""
return pulumi.get(self, "internal_path")
@_builtins.property
@pulumi.getter
def middlewares(self) -> pulumi.Output[Sequence[_builtins.str]]:
"""
Names of Traefik middlewares to apply.
"""
return pulumi.get(self, "middlewares")
@_builtins.property
@pulumi.getter
def path(self) -> pulumi.Output[_builtins.str]:
"""
Path prefix this domain routes, defaults to `/`.
"""
return pulumi.get(self, "path")
@_builtins.property
@pulumi.getter
def port(self) -> pulumi.Output[_builtins.int]:
"""
Container port that receives the traffic, defaults to `3000`.
"""
return pulumi.get(self, "port")
@_builtins.property
@pulumi.getter(name="previewDeploymentId")
def preview_deployment_id(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Preview deployment this domain routes to.
"""
return pulumi.get(self, "preview_deployment_id")
@_builtins.property
@pulumi.getter(name="serviceName")
def service_name(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set.
"""
return pulumi.get(self, "service_name")
@_builtins.property
@pulumi.getter(name="stripPath")
def strip_path(self) -> pulumi.Output[_builtins.bool]:
"""
Strip `path` from the request before forwarding it.
"""
return pulumi.get(self, "strip_path")