Bridge what Dokploy v0.30 added, and let the docs through
build / build (push) Failing after 11m22s
release / plugin (push) Failing after 31m35s
release / sdks (push) Has been skipped

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`.
This commit is contained in:
max-voitcov
2026-08-26 00:46:32 +03:00
parent ad3e908c98
commit 73386ba0ff
137 changed files with 19660 additions and 5183 deletions
+200 -147
View File
@@ -20,21 +20,22 @@ __all__ = ['DomainArgs', 'Domain']
class DomainArgs:
def __init__(__self__, *,
host: pulumi.Input[_builtins.str],
application_id: Optional[pulumi.Input[_builtins.str]] = None,
certificate_type: Optional[pulumi.Input[_builtins.str]] = None,
compose_id: Optional[pulumi.Input[_builtins.str]] = None,
custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None,
custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None,
domain_type: Optional[pulumi.Input[_builtins.str]] = None,
forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
https: Optional[pulumi.Input[_builtins.bool]] = None,
internal_path: Optional[pulumi.Input[_builtins.str]] = None,
middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: Optional[pulumi.Input[_builtins.str]] = None,
port: Optional[pulumi.Input[_builtins.int]] = None,
preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None,
service_name: Optional[pulumi.Input[_builtins.str]] = None,
strip_path: Optional[pulumi.Input[_builtins.bool]] = 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,
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.
@@ -45,6 +46,7 @@ class DomainArgs:
: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 `/`.
@@ -68,6 +70,8 @@ class DomainArgs:
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:
@@ -101,205 +105,218 @@ class DomainArgs:
@_builtins.property
@pulumi.getter(name="applicationId")
def application_id(self) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.bool]]:
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: Optional[pulumi.Input[_builtins.bool]]):
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) -> Optional[pulumi.Input[_builtins.bool]]:
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: Optional[pulumi.Input[_builtins.bool]]):
def https(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "https", value)
@_builtins.property
@pulumi.getter(name="internalPath")
def internal_path(self) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
def internal_path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "internal_path", value)
@_builtins.property
@pulumi.getter
def middlewares(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
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: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
def middlewares(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]):
pulumi.set(self, "middlewares", value)
@_builtins.property
@pulumi.getter
def path(self) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
def path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "path", value)
@_builtins.property
@pulumi.getter
def port(self) -> Optional[pulumi.Input[_builtins.int]]:
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: Optional[pulumi.Input[_builtins.int]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.bool]]:
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: Optional[pulumi.Input[_builtins.bool]]):
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: Optional[pulumi.Input[_builtins.str]] = None,
certificate_type: Optional[pulumi.Input[_builtins.str]] = None,
compose_id: Optional[pulumi.Input[_builtins.str]] = None,
created_at: Optional[pulumi.Input[_builtins.str]] = None,
custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None,
custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None,
domain_type: Optional[pulumi.Input[_builtins.str]] = None,
forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
host: Optional[pulumi.Input[_builtins.str]] = None,
https: Optional[pulumi.Input[_builtins.bool]] = None,
internal_path: Optional[pulumi.Input[_builtins.str]] = None,
middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: Optional[pulumi.Input[_builtins.str]] = None,
port: Optional[pulumi.Input[_builtins.int]] = None,
preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None,
service_name: Optional[pulumi.Input[_builtins.str]] = None,
strip_path: Optional[pulumi.Input[_builtins.bool]] = 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):
"""
Input properties used for looking up and filtering Domain resources.
@@ -310,6 +327,7 @@ class _DomainState:
: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.
@@ -335,6 +353,8 @@ class _DomainState:
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:
@@ -358,206 +378,218 @@ class _DomainState:
@_builtins.property
@pulumi.getter(name="applicationId")
def application_id(self) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.bool]]:
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: Optional[pulumi.Input[_builtins.bool]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
def host(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "host", value)
@_builtins.property
@pulumi.getter
def https(self) -> Optional[pulumi.Input[_builtins.bool]]:
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: Optional[pulumi.Input[_builtins.bool]]):
def https(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "https", value)
@_builtins.property
@pulumi.getter(name="internalPath")
def internal_path(self) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
def internal_path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "internal_path", value)
@_builtins.property
@pulumi.getter
def middlewares(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
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: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
def middlewares(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]):
pulumi.set(self, "middlewares", value)
@_builtins.property
@pulumi.getter
def path(self) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
def path(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "path", value)
@_builtins.property
@pulumi.getter
def port(self) -> Optional[pulumi.Input[_builtins.int]]:
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: Optional[pulumi.Input[_builtins.int]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.str]]:
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: Optional[pulumi.Input[_builtins.str]]):
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) -> Optional[pulumi.Input[_builtins.bool]]:
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: Optional[pulumi.Input[_builtins.bool]]):
def strip_path(self, value: pulumi.Input[Optional[_builtins.bool]]):
pulumi.set(self, "strip_path", value)
@@ -567,25 +599,29 @@ class Domain(pulumi.CustomResource):
def __init__(__self__,
resource_name: str,
opts: Optional[pulumi.ResourceOptions] = None,
application_id: Optional[pulumi.Input[_builtins.str]] = None,
certificate_type: Optional[pulumi.Input[_builtins.str]] = None,
compose_id: Optional[pulumi.Input[_builtins.str]] = None,
custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None,
custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None,
domain_type: Optional[pulumi.Input[_builtins.str]] = None,
forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
host: Optional[pulumi.Input[_builtins.str]] = None,
https: Optional[pulumi.Input[_builtins.bool]] = None,
internal_path: Optional[pulumi.Input[_builtins.str]] = None,
middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: Optional[pulumi.Input[_builtins.str]] = None,
port: Optional[pulumi.Input[_builtins.int]] = None,
preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None,
service_name: Optional[pulumi.Input[_builtins.str]] = None,
strip_path: Optional[pulumi.Input[_builtins.bool]] = 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):
"""
Create a Domain resource with the given unique name, props, and options.
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.
@@ -595,6 +631,7 @@ class Domain(pulumi.CustomResource):
: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.
@@ -613,7 +650,10 @@ class Domain(pulumi.CustomResource):
args: DomainArgs,
opts: Optional[pulumi.ResourceOptions] = None):
"""
Create a Domain resource with the given unique name, props, and options.
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.
@@ -630,22 +670,23 @@ class Domain(pulumi.CustomResource):
def _internal_init(__self__,
resource_name: str,
opts: Optional[pulumi.ResourceOptions] = None,
application_id: Optional[pulumi.Input[_builtins.str]] = None,
certificate_type: Optional[pulumi.Input[_builtins.str]] = None,
compose_id: Optional[pulumi.Input[_builtins.str]] = None,
custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None,
custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None,
domain_type: Optional[pulumi.Input[_builtins.str]] = None,
forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
host: Optional[pulumi.Input[_builtins.str]] = None,
https: Optional[pulumi.Input[_builtins.bool]] = None,
internal_path: Optional[pulumi.Input[_builtins.str]] = None,
middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: Optional[pulumi.Input[_builtins.str]] = None,
port: Optional[pulumi.Input[_builtins.int]] = None,
preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None,
service_name: Optional[pulumi.Input[_builtins.str]] = None,
strip_path: Optional[pulumi.Input[_builtins.bool]] = 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):
@@ -661,6 +702,7 @@ class Domain(pulumi.CustomResource):
__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'")
@@ -684,23 +726,24 @@ class Domain(pulumi.CustomResource):
def get(resource_name: str,
id: pulumi.Input[str],
opts: Optional[pulumi.ResourceOptions] = None,
application_id: Optional[pulumi.Input[_builtins.str]] = None,
certificate_type: Optional[pulumi.Input[_builtins.str]] = None,
compose_id: Optional[pulumi.Input[_builtins.str]] = None,
created_at: Optional[pulumi.Input[_builtins.str]] = None,
custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None,
custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None,
domain_type: Optional[pulumi.Input[_builtins.str]] = None,
forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
host: Optional[pulumi.Input[_builtins.str]] = None,
https: Optional[pulumi.Input[_builtins.bool]] = None,
internal_path: Optional[pulumi.Input[_builtins.str]] = None,
middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
path: Optional[pulumi.Input[_builtins.str]] = None,
port: Optional[pulumi.Input[_builtins.int]] = None,
preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None,
service_name: Optional[pulumi.Input[_builtins.str]] = None,
strip_path: Optional[pulumi.Input[_builtins.bool]] = None) -> 'Domain':
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.
@@ -715,6 +758,7 @@ class Domain(pulumi.CustomResource):
: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.
@@ -737,6 +781,7 @@ class Domain(pulumi.CustomResource):
__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
@@ -805,6 +850,14 @@ class Domain(pulumi.CustomResource):
"""
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]: