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
+35
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A Dokploy application: a single service built from a Git repository, a Docker image, or an uploaded artifact.
//
// Dokploy's `application.create` endpoint accepts only a handful of fields, so this resource creates the application and then applies the rest of the configuration through `application.update`.
//
// > Creating this resource does **not** deploy the application. Trigger a deployment from the Dokploy UI, the CLI, or a `terraformData` provisioner calling `application.deploy`.
type Application struct {
pulumi.CustomResourceState
@@ -121,6 +126,8 @@ type Application struct {
HealthCheckSwarm pulumi.StringPtrOutput `pulumi:"healthCheckSwarm"`
// Heroku buildpack stack version.
HerokuVersion pulumi.StringOutput `pulumi:"herokuVersion"`
// Icon shown next to the service in the Dokploy UI.
Icon pulumi.StringPtrOutput `pulumi:"icon"`
// Build a preview deployment for each pull request.
IsPreviewDeploymentsActive pulumi.BoolOutput `pulumi:"isPreviewDeploymentsActive"`
// Serve a static build as a single-page application.
@@ -165,6 +172,8 @@ type Application struct {
PreviewPath pulumi.StringOutput `pulumi:"previewPath"`
// Container port exposed by preview deployments.
PreviewPort pulumi.IntOutput `pulumi:"previewPort"`
// Only build previews for pull requests opened by users with repository collaborator permissions.
PreviewRequireCollaboratorPermissions pulumi.BoolOutput `pulumi:"previewRequireCollaboratorPermissions"`
// Wildcard domain used to expose preview deployments.
PreviewWildcard pulumi.StringPtrOutput `pulumi:"previewWildcard"`
// Directory served when `buildType` is `static`.
@@ -363,6 +372,8 @@ type applicationState struct {
HealthCheckSwarm *string `pulumi:"healthCheckSwarm"`
// Heroku buildpack stack version.
HerokuVersion *string `pulumi:"herokuVersion"`
// Icon shown next to the service in the Dokploy UI.
Icon *string `pulumi:"icon"`
// Build a preview deployment for each pull request.
IsPreviewDeploymentsActive *bool `pulumi:"isPreviewDeploymentsActive"`
// Serve a static build as a single-page application.
@@ -407,6 +418,8 @@ type applicationState struct {
PreviewPath *string `pulumi:"previewPath"`
// Container port exposed by preview deployments.
PreviewPort *int `pulumi:"previewPort"`
// Only build previews for pull requests opened by users with repository collaborator permissions.
PreviewRequireCollaboratorPermissions *bool `pulumi:"previewRequireCollaboratorPermissions"`
// Wildcard domain used to expose preview deployments.
PreviewWildcard *string `pulumi:"previewWildcard"`
// Directory served when `buildType` is `static`.
@@ -558,6 +571,8 @@ type ApplicationState struct {
HealthCheckSwarm pulumi.StringPtrInput
// Heroku buildpack stack version.
HerokuVersion pulumi.StringPtrInput
// Icon shown next to the service in the Dokploy UI.
Icon pulumi.StringPtrInput
// Build a preview deployment for each pull request.
IsPreviewDeploymentsActive pulumi.BoolPtrInput
// Serve a static build as a single-page application.
@@ -602,6 +617,8 @@ type ApplicationState struct {
PreviewPath pulumi.StringPtrInput
// Container port exposed by preview deployments.
PreviewPort pulumi.IntPtrInput
// Only build previews for pull requests opened by users with repository collaborator permissions.
PreviewRequireCollaboratorPermissions pulumi.BoolPtrInput
// Wildcard domain used to expose preview deployments.
PreviewWildcard pulumi.StringPtrInput
// Directory served when `buildType` is `static`.
@@ -753,6 +770,8 @@ type applicationArgs struct {
HealthCheckSwarm *string `pulumi:"healthCheckSwarm"`
// Heroku buildpack stack version.
HerokuVersion *string `pulumi:"herokuVersion"`
// Icon shown next to the service in the Dokploy UI.
Icon *string `pulumi:"icon"`
// Build a preview deployment for each pull request.
IsPreviewDeploymentsActive *bool `pulumi:"isPreviewDeploymentsActive"`
// Serve a static build as a single-page application.
@@ -797,6 +816,8 @@ type applicationArgs struct {
PreviewPath *string `pulumi:"previewPath"`
// Container port exposed by preview deployments.
PreviewPort *int `pulumi:"previewPort"`
// Only build previews for pull requests opened by users with repository collaborator permissions.
PreviewRequireCollaboratorPermissions *bool `pulumi:"previewRequireCollaboratorPermissions"`
// Wildcard domain used to expose preview deployments.
PreviewWildcard *string `pulumi:"previewWildcard"`
// Directory served when `buildType` is `static`.
@@ -945,6 +966,8 @@ type ApplicationArgs struct {
HealthCheckSwarm pulumi.StringPtrInput
// Heroku buildpack stack version.
HerokuVersion pulumi.StringPtrInput
// Icon shown next to the service in the Dokploy UI.
Icon pulumi.StringPtrInput
// Build a preview deployment for each pull request.
IsPreviewDeploymentsActive pulumi.BoolPtrInput
// Serve a static build as a single-page application.
@@ -989,6 +1012,8 @@ type ApplicationArgs struct {
PreviewPath pulumi.StringPtrInput
// Container port exposed by preview deployments.
PreviewPort pulumi.IntPtrInput
// Only build previews for pull requests opened by users with repository collaborator permissions.
PreviewRequireCollaboratorPermissions pulumi.BoolPtrInput
// Wildcard domain used to expose preview deployments.
PreviewWildcard pulumi.StringPtrInput
// Directory served when `buildType` is `static`.
@@ -1385,6 +1410,11 @@ func (o ApplicationOutput) HerokuVersion() pulumi.StringOutput {
return o.ApplyT(func(v *Application) pulumi.StringOutput { return v.HerokuVersion }).(pulumi.StringOutput)
}
// Icon shown next to the service in the Dokploy UI.
func (o ApplicationOutput) Icon() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Application) pulumi.StringPtrOutput { return v.Icon }).(pulumi.StringPtrOutput)
}
// Build a preview deployment for each pull request.
func (o ApplicationOutput) IsPreviewDeploymentsActive() pulumi.BoolOutput {
return o.ApplyT(func(v *Application) pulumi.BoolOutput { return v.IsPreviewDeploymentsActive }).(pulumi.BoolOutput)
@@ -1495,6 +1525,11 @@ func (o ApplicationOutput) PreviewPort() pulumi.IntOutput {
return o.ApplyT(func(v *Application) pulumi.IntOutput { return v.PreviewPort }).(pulumi.IntOutput)
}
// Only build previews for pull requests opened by users with repository collaborator permissions.
func (o ApplicationOutput) PreviewRequireCollaboratorPermissions() pulumi.BoolOutput {
return o.ApplyT(func(v *Application) pulumi.BoolOutput { return v.PreviewRequireCollaboratorPermissions }).(pulumi.BoolOutput)
}
// Wildcard domain used to expose preview deployments.
func (o ApplicationOutput) PreviewWildcard() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Application) pulumi.StringPtrOutput { return v.PreviewWildcard }).(pulumi.StringPtrOutput)
+3
View File
@@ -12,6 +12,9 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A TLS certificate uploaded to Dokploy, for domains that use `certificateType = "custom"`.
//
// > The private key is stored in Terraform state. Use a state backend with encryption at rest.
type Certificate struct {
pulumi.CustomResourceState
+50
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A Docker Compose or Docker Swarm stack managed by Dokploy.
//
// Set `composeFile` to manage the stack definition inline (with `sourceType = "raw"`), or point the stack at a Git repository and set `composePath`.
//
// > Creating this resource does **not** deploy the stack.
type Compose struct {
pulumi.CustomResourceState
@@ -41,6 +46,8 @@ type Compose struct {
ComposeStatus pulumi.StringOutput `pulumi:"composeStatus"`
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType pulumi.StringOutput `pulumi:"composeType"`
// Write the environment variables to a `.env` file next to the Compose file.
CreateEnvFile pulumi.BoolOutput `pulumi:"createEnvFile"`
// RFC 3339 timestamp of when the stack was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Branch to deploy for a custom Git remote.
@@ -81,6 +88,8 @@ type Compose struct {
GitlabProjectId pulumi.IntPtrOutput `pulumi:"gitlabProjectId"`
// GitLab repository name.
GitlabRepository pulumi.StringPtrOutput `pulumi:"gitlabRepository"`
// Icon shown next to the stack in the Dokploy UI.
Icon pulumi.StringPtrOutput `pulumi:"icon"`
// Run the stack on its own isolated Docker network.
IsolatedDeployment pulumi.BoolOutput `pulumi:"isolatedDeployment"`
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
@@ -95,6 +104,8 @@ type Compose struct {
Repository pulumi.StringPtrOutput `pulumi:"repository"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
ServiceNetworks pulumi.StringPtrOutput `pulumi:"serviceNetworks"`
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
SourceType pulumi.StringOutput `pulumi:"sourceType"`
// Suffix appended to generated resource names.
@@ -164,6 +175,8 @@ type composeState struct {
ComposeStatus *string `pulumi:"composeStatus"`
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType *string `pulumi:"composeType"`
// Write the environment variables to a `.env` file next to the Compose file.
CreateEnvFile *bool `pulumi:"createEnvFile"`
// RFC 3339 timestamp of when the stack was created.
CreatedAt *string `pulumi:"createdAt"`
// Branch to deploy for a custom Git remote.
@@ -204,6 +217,8 @@ type composeState struct {
GitlabProjectId *int `pulumi:"gitlabProjectId"`
// GitLab repository name.
GitlabRepository *string `pulumi:"gitlabRepository"`
// Icon shown next to the stack in the Dokploy UI.
Icon *string `pulumi:"icon"`
// Run the stack on its own isolated Docker network.
IsolatedDeployment *bool `pulumi:"isolatedDeployment"`
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
@@ -218,6 +233,8 @@ type composeState struct {
Repository *string `pulumi:"repository"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
ServiceNetworks *string `pulumi:"serviceNetworks"`
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
SourceType *string `pulumi:"sourceType"`
// Suffix appended to generated resource names.
@@ -255,6 +272,8 @@ type ComposeState struct {
ComposeStatus pulumi.StringPtrInput
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType pulumi.StringPtrInput
// Write the environment variables to a `.env` file next to the Compose file.
CreateEnvFile pulumi.BoolPtrInput
// RFC 3339 timestamp of when the stack was created.
CreatedAt pulumi.StringPtrInput
// Branch to deploy for a custom Git remote.
@@ -295,6 +314,8 @@ type ComposeState struct {
GitlabProjectId pulumi.IntPtrInput
// GitLab repository name.
GitlabRepository pulumi.StringPtrInput
// Icon shown next to the stack in the Dokploy UI.
Icon pulumi.StringPtrInput
// Run the stack on its own isolated Docker network.
IsolatedDeployment pulumi.BoolPtrInput
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
@@ -309,6 +330,8 @@ type ComposeState struct {
Repository pulumi.StringPtrInput
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrInput
// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
ServiceNetworks pulumi.StringPtrInput
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
SourceType pulumi.StringPtrInput
// Suffix appended to generated resource names.
@@ -348,6 +371,8 @@ type composeArgs struct {
ComposePath *string `pulumi:"composePath"`
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType *string `pulumi:"composeType"`
// Write the environment variables to a `.env` file next to the Compose file.
CreateEnvFile *bool `pulumi:"createEnvFile"`
// Branch to deploy for a custom Git remote.
CustomGitBranch *string `pulumi:"customGitBranch"`
// SSH key used to clone a private custom Git remote.
@@ -386,6 +411,8 @@ type composeArgs struct {
GitlabProjectId *int `pulumi:"gitlabProjectId"`
// GitLab repository name.
GitlabRepository *string `pulumi:"gitlabRepository"`
// Icon shown next to the stack in the Dokploy UI.
Icon *string `pulumi:"icon"`
// Run the stack on its own isolated Docker network.
IsolatedDeployment *bool `pulumi:"isolatedDeployment"`
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
@@ -400,6 +427,8 @@ type composeArgs struct {
Repository *string `pulumi:"repository"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
ServiceNetworks *string `pulumi:"serviceNetworks"`
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
SourceType *string `pulumi:"sourceType"`
// Suffix appended to generated resource names.
@@ -436,6 +465,8 @@ type ComposeArgs struct {
ComposePath pulumi.StringPtrInput
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType pulumi.StringPtrInput
// Write the environment variables to a `.env` file next to the Compose file.
CreateEnvFile pulumi.BoolPtrInput
// Branch to deploy for a custom Git remote.
CustomGitBranch pulumi.StringPtrInput
// SSH key used to clone a private custom Git remote.
@@ -474,6 +505,8 @@ type ComposeArgs struct {
GitlabProjectId pulumi.IntPtrInput
// GitLab repository name.
GitlabRepository pulumi.StringPtrInput
// Icon shown next to the stack in the Dokploy UI.
Icon pulumi.StringPtrInput
// Run the stack on its own isolated Docker network.
IsolatedDeployment pulumi.BoolPtrInput
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
@@ -488,6 +521,8 @@ type ComposeArgs struct {
Repository pulumi.StringPtrInput
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrInput
// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
ServiceNetworks pulumi.StringPtrInput
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
SourceType pulumi.StringPtrInput
// Suffix appended to generated resource names.
@@ -650,6 +685,11 @@ func (o ComposeOutput) ComposeType() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.ComposeType }).(pulumi.StringOutput)
}
// Write the environment variables to a `.env` file next to the Compose file.
func (o ComposeOutput) CreateEnvFile() pulumi.BoolOutput {
return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.CreateEnvFile }).(pulumi.BoolOutput)
}
// RFC 3339 timestamp of when the stack was created.
func (o ComposeOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
@@ -750,6 +790,11 @@ func (o ComposeOutput) GitlabRepository() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GitlabRepository }).(pulumi.StringPtrOutput)
}
// Icon shown next to the stack in the Dokploy UI.
func (o ComposeOutput) Icon() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.Icon }).(pulumi.StringPtrOutput)
}
// Run the stack on its own isolated Docker network.
func (o ComposeOutput) IsolatedDeployment() pulumi.BoolOutput {
return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.IsolatedDeployment }).(pulumi.BoolOutput)
@@ -785,6 +830,11 @@ func (o ComposeOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
func (o ComposeOutput) ServiceNetworks() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.ServiceNetworks }).(pulumi.StringPtrOutput)
}
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
func (o ComposeOutput) SourceType() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.SourceType }).(pulumi.StringOutput)
+3
View File
@@ -12,6 +12,9 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// An S3-compatible bucket that Dokploy writes database and volume backups to.
//
// > The secret access key is stored in Terraform state. Use a state backend with encryption at rest.
type Destination struct {
pulumi.CustomResourceState
+276
View File
@@ -0,0 +1,276 @@
// Code generated by pulumi-language-go DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package dokploy
import (
"context"
"reflect"
"errors"
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A DNS provider connection Dokploy uses to create records for domains automatically.
//
// `config` is a JSON object whose shape depends on `providerType`:
type DnsProvider struct {
pulumi.CustomResourceState
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config pulumi.StringOutput `pulumi:"config"`
// RFC 3339 timestamp of when the connection was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
Name pulumi.StringOutput `pulumi:"name"`
// Organization that owns the connection.
OrganizationId pulumi.StringOutput `pulumi:"organizationId"`
// Provider kind derived from `config`: `cloudflare` or `route53`.
ProviderType pulumi.StringOutput `pulumi:"providerType"`
}
// NewDnsProvider registers a new resource with the given unique name, arguments, and options.
func NewDnsProvider(ctx *pulumi.Context,
name string, args *DnsProviderArgs, opts ...pulumi.ResourceOption) (*DnsProvider, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.Config == nil {
return nil, errors.New("invalid value for required argument 'Config'")
}
if args.Config != nil {
args.Config = pulumi.ToSecret(args.Config).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"config",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource DnsProvider
err := ctx.RegisterResource("dokploy:index/dnsProvider:DnsProvider", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetDnsProvider gets an existing DnsProvider resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetDnsProvider(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *DnsProviderState, opts ...pulumi.ResourceOption) (*DnsProvider, error) {
var resource DnsProvider
err := ctx.ReadResource("dokploy:index/dnsProvider:DnsProvider", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering DnsProvider resources.
type dnsProviderState struct {
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config *string `pulumi:"config"`
// RFC 3339 timestamp of when the connection was created.
CreatedAt *string `pulumi:"createdAt"`
// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
Name *string `pulumi:"name"`
// Organization that owns the connection.
OrganizationId *string `pulumi:"organizationId"`
// Provider kind derived from `config`: `cloudflare` or `route53`.
ProviderType *string `pulumi:"providerType"`
}
type DnsProviderState struct {
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config pulumi.StringPtrInput
// RFC 3339 timestamp of when the connection was created.
CreatedAt pulumi.StringPtrInput
// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
Name pulumi.StringPtrInput
// Organization that owns the connection.
OrganizationId pulumi.StringPtrInput
// Provider kind derived from `config`: `cloudflare` or `route53`.
ProviderType pulumi.StringPtrInput
}
func (DnsProviderState) ElementType() reflect.Type {
return reflect.TypeOf((*dnsProviderState)(nil)).Elem()
}
type dnsProviderArgs struct {
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config string `pulumi:"config"`
// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
Name *string `pulumi:"name"`
}
// The set of arguments for constructing a DnsProvider resource.
type DnsProviderArgs struct {
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config pulumi.StringInput
// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
Name pulumi.StringPtrInput
}
func (DnsProviderArgs) ElementType() reflect.Type {
return reflect.TypeOf((*dnsProviderArgs)(nil)).Elem()
}
type DnsProviderInput interface {
pulumi.Input
ToDnsProviderOutput() DnsProviderOutput
ToDnsProviderOutputWithContext(ctx context.Context) DnsProviderOutput
}
func (*DnsProvider) ElementType() reflect.Type {
return reflect.TypeOf((**DnsProvider)(nil)).Elem()
}
func (i *DnsProvider) ToDnsProviderOutput() DnsProviderOutput {
return i.ToDnsProviderOutputWithContext(context.Background())
}
func (i *DnsProvider) ToDnsProviderOutputWithContext(ctx context.Context) DnsProviderOutput {
return pulumi.ToOutputWithContext(ctx, i).(DnsProviderOutput)
}
// DnsProviderArrayInput is an input type that accepts DnsProviderArray and DnsProviderArrayOutput values.
// You can construct a concrete instance of `DnsProviderArrayInput` via:
//
// DnsProviderArray{ DnsProviderArgs{...} }
type DnsProviderArrayInput interface {
pulumi.Input
ToDnsProviderArrayOutput() DnsProviderArrayOutput
ToDnsProviderArrayOutputWithContext(context.Context) DnsProviderArrayOutput
}
type DnsProviderArray []DnsProviderInput
func (DnsProviderArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*DnsProvider)(nil)).Elem()
}
func (i DnsProviderArray) ToDnsProviderArrayOutput() DnsProviderArrayOutput {
return i.ToDnsProviderArrayOutputWithContext(context.Background())
}
func (i DnsProviderArray) ToDnsProviderArrayOutputWithContext(ctx context.Context) DnsProviderArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(DnsProviderArrayOutput)
}
// DnsProviderMapInput is an input type that accepts DnsProviderMap and DnsProviderMapOutput values.
// You can construct a concrete instance of `DnsProviderMapInput` via:
//
// DnsProviderMap{ "key": DnsProviderArgs{...} }
type DnsProviderMapInput interface {
pulumi.Input
ToDnsProviderMapOutput() DnsProviderMapOutput
ToDnsProviderMapOutputWithContext(context.Context) DnsProviderMapOutput
}
type DnsProviderMap map[string]DnsProviderInput
func (DnsProviderMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*DnsProvider)(nil)).Elem()
}
func (i DnsProviderMap) ToDnsProviderMapOutput() DnsProviderMapOutput {
return i.ToDnsProviderMapOutputWithContext(context.Background())
}
func (i DnsProviderMap) ToDnsProviderMapOutputWithContext(ctx context.Context) DnsProviderMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(DnsProviderMapOutput)
}
type DnsProviderOutput struct{ *pulumi.OutputState }
func (DnsProviderOutput) ElementType() reflect.Type {
return reflect.TypeOf((**DnsProvider)(nil)).Elem()
}
func (o DnsProviderOutput) ToDnsProviderOutput() DnsProviderOutput {
return o
}
func (o DnsProviderOutput) ToDnsProviderOutputWithContext(ctx context.Context) DnsProviderOutput {
return o
}
// Provider credentials as a JSON object, including the `providerType` discriminator.
func (o DnsProviderOutput) Config() pulumi.StringOutput {
return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.Config }).(pulumi.StringOutput)
}
// RFC 3339 timestamp of when the connection was created.
func (o DnsProviderOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
func (o DnsProviderOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// Organization that owns the connection.
func (o DnsProviderOutput) OrganizationId() pulumi.StringOutput {
return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput)
}
// Provider kind derived from `config`: `cloudflare` or `route53`.
func (o DnsProviderOutput) ProviderType() pulumi.StringOutput {
return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.ProviderType }).(pulumi.StringOutput)
}
type DnsProviderArrayOutput struct{ *pulumi.OutputState }
func (DnsProviderArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*DnsProvider)(nil)).Elem()
}
func (o DnsProviderArrayOutput) ToDnsProviderArrayOutput() DnsProviderArrayOutput {
return o
}
func (o DnsProviderArrayOutput) ToDnsProviderArrayOutputWithContext(ctx context.Context) DnsProviderArrayOutput {
return o
}
func (o DnsProviderArrayOutput) Index(i pulumi.IntInput) DnsProviderOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DnsProvider {
return vs[0].([]*DnsProvider)[vs[1].(int)]
}).(DnsProviderOutput)
}
type DnsProviderMapOutput struct{ *pulumi.OutputState }
func (DnsProviderMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*DnsProvider)(nil)).Elem()
}
func (o DnsProviderMapOutput) ToDnsProviderMapOutput() DnsProviderMapOutput {
return o
}
func (o DnsProviderMapOutput) ToDnsProviderMapOutputWithContext(ctx context.Context) DnsProviderMapOutput {
return o
}
func (o DnsProviderMapOutput) MapIndex(k pulumi.StringInput) DnsProviderOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DnsProvider {
return vs[0].(map[string]*DnsProvider)[vs[1].(string)]
}).(DnsProviderOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*DnsProviderInput)(nil)).Elem(), &DnsProvider{})
pulumi.RegisterInputType(reflect.TypeOf((*DnsProviderArrayInput)(nil)).Elem(), DnsProviderArray{})
pulumi.RegisterInputType(reflect.TypeOf((*DnsProviderMapInput)(nil)).Elem(), DnsProviderMap{})
pulumi.RegisterOutputType(DnsProviderOutput{})
pulumi.RegisterOutputType(DnsProviderArrayOutput{})
pulumi.RegisterOutputType(DnsProviderMapOutput{})
}
+18
View File
@@ -12,6 +12,9 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A domain routed to an application or a Compose service through Dokploy's Traefik instance.
//
// Set exactly one of `applicationId` or `composeId`. When targeting a Compose stack, `serviceName` selects which service in the stack receives the traffic.
type Domain struct {
pulumi.CustomResourceState
@@ -29,6 +32,8 @@ type Domain struct {
CustomEntrypoint pulumi.StringPtrOutput `pulumi:"customEntrypoint"`
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType pulumi.StringOutput `pulumi:"domainType"`
// 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.
Enabled pulumi.BoolOutput `pulumi:"enabled"`
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled pulumi.BoolOutput `pulumi:"forwardAuthEnabled"`
// Fully-qualified hostname, for example `api.example.com`.
@@ -98,6 +103,8 @@ type domainState struct {
CustomEntrypoint *string `pulumi:"customEntrypoint"`
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType *string `pulumi:"domainType"`
// 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.
Enabled *bool `pulumi:"enabled"`
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled *bool `pulumi:"forwardAuthEnabled"`
// Fully-qualified hostname, for example `api.example.com`.
@@ -135,6 +142,8 @@ type DomainState struct {
CustomEntrypoint pulumi.StringPtrInput
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType pulumi.StringPtrInput
// 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.
Enabled pulumi.BoolPtrInput
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled pulumi.BoolPtrInput
// Fully-qualified hostname, for example `api.example.com`.
@@ -174,6 +183,8 @@ type domainArgs struct {
CustomEntrypoint *string `pulumi:"customEntrypoint"`
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType *string `pulumi:"domainType"`
// 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.
Enabled *bool `pulumi:"enabled"`
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled *bool `pulumi:"forwardAuthEnabled"`
// Fully-qualified hostname, for example `api.example.com`.
@@ -210,6 +221,8 @@ type DomainArgs struct {
CustomEntrypoint pulumi.StringPtrInput
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType pulumi.StringPtrInput
// 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.
Enabled pulumi.BoolPtrInput
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled pulumi.BoolPtrInput
// Fully-qualified hostname, for example `api.example.com`.
@@ -354,6 +367,11 @@ func (o DomainOutput) DomainType() pulumi.StringOutput {
return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.DomainType }).(pulumi.StringOutput)
}
// 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.
func (o DomainOutput) Enabled() pulumi.BoolOutput {
return o.ApplyT(func(v *Domain) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput)
}
// Protect this domain with Dokploy's forward auth.
func (o DomainOutput) ForwardAuthEnabled() pulumi.BoolOutput {
return o.ApplyT(func(v *Domain) pulumi.BoolOutput { return v.ForwardAuthEnabled }).(pulumi.BoolOutput)
+3
View File
@@ -12,6 +12,9 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// An environment inside a Dokploy project, such as `staging` or `production`. Services belong to an environment rather than directly to a project.
//
// Dokploy creates a default `production` environment with every project; reference it via `dokploy_project.<name>.default_environment_id` instead of declaring it here.
type Environment struct {
pulumi.CustomResourceState
+29 -8
View File
@@ -11,6 +11,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// Look up an existing application by ID.
func LookupApplication(ctx *pulumi.Context, args *LookupApplicationArgs, opts ...pulumi.InvokeOption) (*LookupApplicationResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv LookupApplicationResult
@@ -23,20 +24,30 @@ func LookupApplication(ctx *pulumi.Context, args *LookupApplicationArgs, opts ..
// A collection of arguments for invoking getApplication.
type LookupApplicationArgs struct {
// Application identifier.
Id string `pulumi:"id"`
}
// A collection of values returned by getApplication.
type LookupApplicationResult struct {
AppName string `pulumi:"appName"`
// Docker service name.
AppName string `pulumi:"appName"`
// Current status.
ApplicationStatus string `pulumi:"applicationStatus"`
BuildType string `pulumi:"buildType"`
CreatedAt string `pulumi:"createdAt"`
Description string `pulumi:"description"`
EnvironmentId string `pulumi:"environmentId"`
Id string `pulumi:"id"`
Name string `pulumi:"name"`
SourceType string `pulumi:"sourceType"`
// Build strategy.
BuildType string `pulumi:"buildType"`
// Creation timestamp.
CreatedAt string `pulumi:"createdAt"`
// Application description.
Description string `pulumi:"description"`
// Owning environment.
EnvironmentId string `pulumi:"environmentId"`
// Application identifier.
Id string `pulumi:"id"`
// Application name.
Name string `pulumi:"name"`
// Source of the code or image.
SourceType string `pulumi:"sourceType"`
}
func LookupApplicationOutput(ctx *pulumi.Context, args LookupApplicationOutputArgs, opts ...pulumi.InvokeOption) LookupApplicationResultOutput {
@@ -50,6 +61,7 @@ func LookupApplicationOutput(ctx *pulumi.Context, args LookupApplicationOutputAr
// A collection of arguments for invoking getApplication.
type LookupApplicationOutputArgs struct {
// Application identifier.
Id pulumi.StringInput `pulumi:"id"`
}
@@ -72,38 +84,47 @@ func (o LookupApplicationResultOutput) ToLookupApplicationResultOutputWithContex
return o
}
// Docker service name.
func (o LookupApplicationResultOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.AppName }).(pulumi.StringOutput)
}
// Current status.
func (o LookupApplicationResultOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.ApplicationStatus }).(pulumi.StringOutput)
}
// Build strategy.
func (o LookupApplicationResultOutput) BuildType() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.BuildType }).(pulumi.StringOutput)
}
// Creation timestamp.
func (o LookupApplicationResultOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.CreatedAt }).(pulumi.StringOutput)
}
// Application description.
func (o LookupApplicationResultOutput) Description() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.Description }).(pulumi.StringOutput)
}
// Owning environment.
func (o LookupApplicationResultOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Application identifier.
func (o LookupApplicationResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.Id }).(pulumi.StringOutput)
}
// Application name.
func (o LookupApplicationResultOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.Name }).(pulumi.StringOutput)
}
// Source of the code or image.
func (o LookupApplicationResultOutput) SourceType() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.SourceType }).(pulumi.StringOutput)
}
+23 -6
View File
@@ -11,6 +11,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// Look up an existing environment by ID.
func LookupEnvironment(ctx *pulumi.Context, args *LookupEnvironmentArgs, opts ...pulumi.InvokeOption) (*LookupEnvironmentResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv LookupEnvironmentResult
@@ -23,18 +24,26 @@ func LookupEnvironment(ctx *pulumi.Context, args *LookupEnvironmentArgs, opts ..
// A collection of arguments for invoking getEnvironment.
type LookupEnvironmentArgs struct {
// Environment identifier.
Id string `pulumi:"id"`
}
// A collection of values returned by getEnvironment.
type LookupEnvironmentResult struct {
CreatedAt string `pulumi:"createdAt"`
// Creation timestamp.
CreatedAt string `pulumi:"createdAt"`
// Environment description.
Description string `pulumi:"description"`
Env string `pulumi:"env"`
Id string `pulumi:"id"`
IsDefault bool `pulumi:"isDefault"`
Name string `pulumi:"name"`
ProjectId string `pulumi:"projectId"`
// Environment-wide variables.
Env string `pulumi:"env"`
// Environment identifier.
Id string `pulumi:"id"`
// Whether this is the project's default environment.
IsDefault bool `pulumi:"isDefault"`
// Environment name.
Name string `pulumi:"name"`
// Owning project.
ProjectId string `pulumi:"projectId"`
}
func LookupEnvironmentOutput(ctx *pulumi.Context, args LookupEnvironmentOutputArgs, opts ...pulumi.InvokeOption) LookupEnvironmentResultOutput {
@@ -48,6 +57,7 @@ func LookupEnvironmentOutput(ctx *pulumi.Context, args LookupEnvironmentOutputAr
// A collection of arguments for invoking getEnvironment.
type LookupEnvironmentOutputArgs struct {
// Environment identifier.
Id pulumi.StringInput `pulumi:"id"`
}
@@ -70,30 +80,37 @@ func (o LookupEnvironmentResultOutput) ToLookupEnvironmentResultOutputWithContex
return o
}
// Creation timestamp.
func (o LookupEnvironmentResultOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.CreatedAt }).(pulumi.StringOutput)
}
// Environment description.
func (o LookupEnvironmentResultOutput) Description() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Description }).(pulumi.StringOutput)
}
// Environment-wide variables.
func (o LookupEnvironmentResultOutput) Env() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Env }).(pulumi.StringOutput)
}
// Environment identifier.
func (o LookupEnvironmentResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Id }).(pulumi.StringOutput)
}
// Whether this is the project's default environment.
func (o LookupEnvironmentResultOutput) IsDefault() pulumi.BoolOutput {
return o.ApplyT(func(v LookupEnvironmentResult) bool { return v.IsDefault }).(pulumi.BoolOutput)
}
// Environment name.
func (o LookupEnvironmentResultOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Name }).(pulumi.StringOutput)
}
// Owning project.
func (o LookupEnvironmentResultOutput) ProjectId() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.ProjectId }).(pulumi.StringOutput)
}
+27 -8
View File
@@ -11,6 +11,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// Look up an existing Dokploy project by ID, including its environments.
func LookupProject(ctx *pulumi.Context, args *LookupProjectArgs, opts ...pulumi.InvokeOption) (*LookupProjectResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv LookupProjectResult
@@ -23,19 +24,28 @@ func LookupProject(ctx *pulumi.Context, args *LookupProjectArgs, opts ...pulumi.
// A collection of arguments for invoking getProject.
type LookupProjectArgs struct {
// Project identifier.
Id string `pulumi:"id"`
}
// A collection of values returned by getProject.
type LookupProjectResult struct {
CreatedAt string `pulumi:"createdAt"`
DefaultEnvironmentId string `pulumi:"defaultEnvironmentId"`
Description string `pulumi:"description"`
Env string `pulumi:"env"`
Environments []GetProjectEnvironment `pulumi:"environments"`
Id string `pulumi:"id"`
Name string `pulumi:"name"`
OrganizationId string `pulumi:"organizationId"`
// Creation timestamp.
CreatedAt string `pulumi:"createdAt"`
// ID of the project's default environment.
DefaultEnvironmentId string `pulumi:"defaultEnvironmentId"`
// Project description.
Description string `pulumi:"description"`
// Project-wide environment variables.
Env string `pulumi:"env"`
// Every environment in the project.
Environments []GetProjectEnvironment `pulumi:"environments"`
// Project identifier.
Id string `pulumi:"id"`
// Project name.
Name string `pulumi:"name"`
// Owning organization.
OrganizationId string `pulumi:"organizationId"`
}
func LookupProjectOutput(ctx *pulumi.Context, args LookupProjectOutputArgs, opts ...pulumi.InvokeOption) LookupProjectResultOutput {
@@ -49,6 +59,7 @@ func LookupProjectOutput(ctx *pulumi.Context, args LookupProjectOutputArgs, opts
// A collection of arguments for invoking getProject.
type LookupProjectOutputArgs struct {
// Project identifier.
Id pulumi.StringInput `pulumi:"id"`
}
@@ -71,34 +82,42 @@ func (o LookupProjectResultOutput) ToLookupProjectResultOutputWithContext(ctx co
return o
}
// Creation timestamp.
func (o LookupProjectResultOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.CreatedAt }).(pulumi.StringOutput)
}
// ID of the project's default environment.
func (o LookupProjectResultOutput) DefaultEnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.DefaultEnvironmentId }).(pulumi.StringOutput)
}
// Project description.
func (o LookupProjectResultOutput) Description() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Description }).(pulumi.StringOutput)
}
// Project-wide environment variables.
func (o LookupProjectResultOutput) Env() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Env }).(pulumi.StringOutput)
}
// Every environment in the project.
func (o LookupProjectResultOutput) Environments() GetProjectEnvironmentArrayOutput {
return o.ApplyT(func(v LookupProjectResult) []GetProjectEnvironment { return v.Environments }).(GetProjectEnvironmentArrayOutput)
}
// Project identifier.
func (o LookupProjectResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Id }).(pulumi.StringOutput)
}
// Project name.
func (o LookupProjectResultOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Name }).(pulumi.StringOutput)
}
// Owning organization.
func (o LookupProjectResultOutput) OrganizationId() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.OrganizationId }).(pulumi.StringOutput)
}
+3
View File
@@ -11,6 +11,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// List every Dokploy project the API token can see.
func GetProjects(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetProjectsResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv GetProjectsResult
@@ -23,6 +24,7 @@ func GetProjects(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetProjects
// A collection of values returned by getProjects.
type GetProjectsResult struct {
// All visible projects.
Projects []GetProjectsProject `pulumi:"projects"`
}
@@ -48,6 +50,7 @@ func (o GetProjectsResultOutput) ToGetProjectsResultOutputWithContext(ctx contex
return o
}
// All visible projects.
func (o GetProjectsResultOutput) Projects() GetProjectsProjectArrayOutput {
return o.ApplyT(func(v GetProjectsResult) []GetProjectsProject { return v.Projects }).(GetProjectsProjectArrayOutput)
}
+3
View File
@@ -11,6 +11,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// List the remote servers registered with Dokploy. Use a server's `id` as the `serverId` of an application, stack, or database to deploy it away from the Dokploy host.
func GetServers(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetServersResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv GetServersResult
@@ -23,6 +24,7 @@ func GetServers(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetServersRe
// A collection of values returned by getServers.
type GetServersResult struct {
// All registered servers.
Servers []GetServersServer `pulumi:"servers"`
}
@@ -48,6 +50,7 @@ func (o GetServersResultOutput) ToGetServersResultOutputWithContext(ctx context.
return o
}
// All registered servers.
func (o GetServersResultOutput) Servers() GetServersServerArrayOutput {
return o.ApplyT(func(v GetServersResult) []GetServersServer { return v.Servers }).(GetServersServerArrayOutput)
}
+42
View File
@@ -29,10 +29,14 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi
r = &Compose{}
case "dokploy:index/destination:Destination":
r = &Destination{}
case "dokploy:index/dnsProvider:DnsProvider":
r = &DnsProvider{}
case "dokploy:index/domain:Domain":
r = &Domain{}
case "dokploy:index/environment:Environment":
r = &Environment{}
case "dokploy:index/libsql:Libsql":
r = &Libsql{}
case "dokploy:index/mariaDb:MariaDb":
r = &MariaDb{}
case "dokploy:index/mongo:Mongo":
@@ -41,6 +45,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi
r = &Mount{}
case "dokploy:index/mySql:MySql":
r = &MySql{}
case "dokploy:index/network:Network":
r = &Network{}
case "dokploy:index/port:Port":
r = &Port{}
case "dokploy:index/postgres:Postgres":
@@ -53,10 +59,16 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi
r = &Redis{}
case "dokploy:index/registry:Registry":
r = &Registry{}
case "dokploy:index/schedule:Schedule":
r = &Schedule{}
case "dokploy:index/security:Security":
r = &Security{}
case "dokploy:index/sshKey:SshKey":
r = &SshKey{}
case "dokploy:index/vaultProvider:VaultProvider":
r = &VaultProvider{}
case "dokploy:index/volumeBackup:VolumeBackup":
r = &VolumeBackup{}
default:
return nil, fmt.Errorf("unknown resource type: %s", typ)
}
@@ -108,6 +120,11 @@ func init() {
"index/destination",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/dnsProvider",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/domain",
@@ -118,6 +135,11 @@ func init() {
"index/environment",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/libsql",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/mariaDb",
@@ -138,6 +160,11 @@ func init() {
"index/mySql",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/network",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/port",
@@ -168,6 +195,11 @@ func init() {
"index/registry",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/schedule",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/security",
@@ -178,6 +210,16 @@ func init() {
"index/sshKey",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/vaultProvider",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/volumeBackup",
&module{version},
)
pulumi.RegisterResourcePackage(
"dokploy",
&pkg{version},
+2 -2
View File
@@ -165,7 +165,7 @@ func callPlainInner(
func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption {
defaults := []pulumi.ResourceOption{}
defaults = append(defaults, pulumi.PluginDownloadURL("https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}"))
version := semver.MustParse("0.1.0")
version := semver.MustParse("0.2.0")
if !version.Equals(semver.Version{}) {
defaults = append(defaults, pulumi.Version(version.String()))
}
@@ -176,7 +176,7 @@ func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOptio
func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption {
defaults := []pulumi.InvokeOption{}
defaults = append(defaults, pulumi.PluginDownloadURL("https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}"))
version := semver.MustParse("0.1.0")
version := semver.MustParse("0.2.0")
if !version.Equals(semver.Version{}) {
defaults = append(defaults, pulumi.Version(version.String()))
}
+743
View File
@@ -0,0 +1,743 @@
// Code generated by pulumi-language-go DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package dokploy
import (
"context"
"reflect"
"errors"
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A managed libSQL instance running on Dokploy.
//
// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.
//
// > Credentials are stored in Terraform state. Use a state backend with encryption at rest.
//
// libSQL runs as a `sqld` server. A `primary` node owns the data; a `replica` node follows a primary named by `sqldPrimaryUrl`.
type Libsql struct {
pulumi.CustomResourceState
// Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.
AppName pulumi.StringOutput `pulumi:"appName"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus pulumi.StringOutput `pulumi:"applicationStatus"`
// Override the container entrypoint command.
Command pulumi.StringPtrOutput `pulumi:"command"`
// Hard CPU limit, for example `1`.
CpuLimit pulumi.StringPtrOutput `pulumi:"cpuLimit"`
// Soft CPU reservation, for example `0.5`.
CpuReservation pulumi.StringPtrOutput `pulumi:"cpuReservation"`
// RFC 3339 timestamp of when the database was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Password for the database user.
DatabasePassword pulumi.StringOutput `pulumi:"databasePassword"`
// Database user to create.
DatabaseUser pulumi.StringOutput `pulumi:"databaseUser"`
// Free-form description.
Description pulumi.StringPtrOutput `pulumi:"description"`
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolOutput `pulumi:"detachDokployNetwork"`
// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
DockerImage pulumi.StringOutput `pulumi:"dockerImage"`
// Serve multiple logical databases from one instance through libSQL namespaces.
EnableNamespaces pulumi.BoolOutput `pulumi:"enableNamespaces"`
// Docker Swarm endpoint specification, as a JSON object.
EndpointSpecSwarm pulumi.StringPtrOutput `pulumi:"endpointSpecSwarm"`
// Environment variables in `KEY=value` format, one per line.
Env pulumi.StringPtrOutput `pulumi:"env"`
// Environment this database belongs to.
EnvironmentId pulumi.StringOutput `pulumi:"environmentId"`
// Host port exposing the admin API.
ExternalAdminPort pulumi.IntPtrOutput `pulumi:"externalAdminPort"`
// Host port exposing the gRPC replication endpoint.
ExternalGrpcPort pulumi.IntPtrOutput `pulumi:"externalGrpcPort"`
// Host port exposing the HTTP API.
ExternalPort pulumi.IntPtrOutput `pulumi:"externalPort"`
// Docker Swarm health check configuration, as a JSON object.
HealthCheckSwarm pulumi.StringPtrOutput `pulumi:"healthCheckSwarm"`
// Docker Swarm service labels, as a JSON object.
LabelsSwarm pulumi.StringPtrOutput `pulumi:"labelsSwarm"`
// Hard memory limit, for example `512m`.
MemoryLimit pulumi.StringPtrOutput `pulumi:"memoryLimit"`
// Soft memory reservation, for example `256m`.
MemoryReservation pulumi.StringPtrOutput `pulumi:"memoryReservation"`
// Docker Swarm service mode, as a JSON object.
ModeSwarm pulumi.StringPtrOutput `pulumi:"modeSwarm"`
// Display name of the database.
Name pulumi.StringOutput `pulumi:"name"`
// IDs of additional Docker networks to attach.
NetworkIds pulumi.StringArrayOutput `pulumi:"networkIds"`
// Docker Swarm network attachments, as a JSON array.
NetworkSwarm pulumi.StringPtrOutput `pulumi:"networkSwarm"`
// Docker Swarm placement constraints, as a JSON object.
PlacementSwarm pulumi.StringPtrOutput `pulumi:"placementSwarm"`
// Number of replicas to run.
Replicas pulumi.IntOutput `pulumi:"replicas"`
// Docker Swarm restart policy, as a JSON object.
RestartPolicySwarm pulumi.StringPtrOutput `pulumi:"restartPolicySwarm"`
// Docker Swarm rollback configuration, as a JSON object.
RollbackConfigSwarm pulumi.StringPtrOutput `pulumi:"rollbackConfigSwarm"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
// Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
SqldNode pulumi.StringOutput `pulumi:"sqldNode"`
// URL of the primary node, when `sqldNode` is `replica`.
SqldPrimaryUrl pulumi.StringPtrOutput `pulumi:"sqldPrimaryUrl"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrOutput `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrOutput `pulumi:"updateConfigSwarm"`
}
// NewLibsql registers a new resource with the given unique name, arguments, and options.
func NewLibsql(ctx *pulumi.Context,
name string, args *LibsqlArgs, opts ...pulumi.ResourceOption) (*Libsql, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.DatabasePassword == nil {
return nil, errors.New("invalid value for required argument 'DatabasePassword'")
}
if args.DatabaseUser == nil {
return nil, errors.New("invalid value for required argument 'DatabaseUser'")
}
if args.DockerImage == nil {
return nil, errors.New("invalid value for required argument 'DockerImage'")
}
if args.EnvironmentId == nil {
return nil, errors.New("invalid value for required argument 'EnvironmentId'")
}
if args.DatabasePassword != nil {
args.DatabasePassword = pulumi.ToSecret(args.DatabasePassword).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"databasePassword",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource Libsql
err := ctx.RegisterResource("dokploy:index/libsql:Libsql", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetLibsql gets an existing Libsql resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetLibsql(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *LibsqlState, opts ...pulumi.ResourceOption) (*Libsql, error) {
var resource Libsql
err := ctx.ReadResource("dokploy:index/libsql:Libsql", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Libsql resources.
type libsqlState struct {
// Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus *string `pulumi:"applicationStatus"`
// Override the container entrypoint command.
Command *string `pulumi:"command"`
// Hard CPU limit, for example `1`.
CpuLimit *string `pulumi:"cpuLimit"`
// Soft CPU reservation, for example `0.5`.
CpuReservation *string `pulumi:"cpuReservation"`
// RFC 3339 timestamp of when the database was created.
CreatedAt *string `pulumi:"createdAt"`
// Password for the database user.
DatabasePassword *string `pulumi:"databasePassword"`
// Database user to create.
DatabaseUser *string `pulumi:"databaseUser"`
// Free-form description.
Description *string `pulumi:"description"`
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork *bool `pulumi:"detachDokployNetwork"`
// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
DockerImage *string `pulumi:"dockerImage"`
// Serve multiple logical databases from one instance through libSQL namespaces.
EnableNamespaces *bool `pulumi:"enableNamespaces"`
// Docker Swarm endpoint specification, as a JSON object.
EndpointSpecSwarm *string `pulumi:"endpointSpecSwarm"`
// Environment variables in `KEY=value` format, one per line.
Env *string `pulumi:"env"`
// Environment this database belongs to.
EnvironmentId *string `pulumi:"environmentId"`
// Host port exposing the admin API.
ExternalAdminPort *int `pulumi:"externalAdminPort"`
// Host port exposing the gRPC replication endpoint.
ExternalGrpcPort *int `pulumi:"externalGrpcPort"`
// Host port exposing the HTTP API.
ExternalPort *int `pulumi:"externalPort"`
// Docker Swarm health check configuration, as a JSON object.
HealthCheckSwarm *string `pulumi:"healthCheckSwarm"`
// Docker Swarm service labels, as a JSON object.
LabelsSwarm *string `pulumi:"labelsSwarm"`
// Hard memory limit, for example `512m`.
MemoryLimit *string `pulumi:"memoryLimit"`
// Soft memory reservation, for example `256m`.
MemoryReservation *string `pulumi:"memoryReservation"`
// Docker Swarm service mode, as a JSON object.
ModeSwarm *string `pulumi:"modeSwarm"`
// Display name of the database.
Name *string `pulumi:"name"`
// IDs of additional Docker networks to attach.
NetworkIds []string `pulumi:"networkIds"`
// Docker Swarm network attachments, as a JSON array.
NetworkSwarm *string `pulumi:"networkSwarm"`
// Docker Swarm placement constraints, as a JSON object.
PlacementSwarm *string `pulumi:"placementSwarm"`
// Number of replicas to run.
Replicas *int `pulumi:"replicas"`
// Docker Swarm restart policy, as a JSON object.
RestartPolicySwarm *string `pulumi:"restartPolicySwarm"`
// Docker Swarm rollback configuration, as a JSON object.
RollbackConfigSwarm *string `pulumi:"rollbackConfigSwarm"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
// Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
SqldNode *string `pulumi:"sqldNode"`
// URL of the primary node, when `sqldNode` is `replica`.
SqldPrimaryUrl *string `pulumi:"sqldPrimaryUrl"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
type LibsqlState struct {
// Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus pulumi.StringPtrInput
// Override the container entrypoint command.
Command pulumi.StringPtrInput
// Hard CPU limit, for example `1`.
CpuLimit pulumi.StringPtrInput
// Soft CPU reservation, for example `0.5`.
CpuReservation pulumi.StringPtrInput
// RFC 3339 timestamp of when the database was created.
CreatedAt pulumi.StringPtrInput
// Password for the database user.
DatabasePassword pulumi.StringPtrInput
// Database user to create.
DatabaseUser pulumi.StringPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolPtrInput
// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
DockerImage pulumi.StringPtrInput
// Serve multiple logical databases from one instance through libSQL namespaces.
EnableNamespaces pulumi.BoolPtrInput
// Docker Swarm endpoint specification, as a JSON object.
EndpointSpecSwarm pulumi.StringPtrInput
// Environment variables in `KEY=value` format, one per line.
Env pulumi.StringPtrInput
// Environment this database belongs to.
EnvironmentId pulumi.StringPtrInput
// Host port exposing the admin API.
ExternalAdminPort pulumi.IntPtrInput
// Host port exposing the gRPC replication endpoint.
ExternalGrpcPort pulumi.IntPtrInput
// Host port exposing the HTTP API.
ExternalPort pulumi.IntPtrInput
// Docker Swarm health check configuration, as a JSON object.
HealthCheckSwarm pulumi.StringPtrInput
// Docker Swarm service labels, as a JSON object.
LabelsSwarm pulumi.StringPtrInput
// Hard memory limit, for example `512m`.
MemoryLimit pulumi.StringPtrInput
// Soft memory reservation, for example `256m`.
MemoryReservation pulumi.StringPtrInput
// Docker Swarm service mode, as a JSON object.
ModeSwarm pulumi.StringPtrInput
// Display name of the database.
Name pulumi.StringPtrInput
// IDs of additional Docker networks to attach.
NetworkIds pulumi.StringArrayInput
// Docker Swarm network attachments, as a JSON array.
NetworkSwarm pulumi.StringPtrInput
// Docker Swarm placement constraints, as a JSON object.
PlacementSwarm pulumi.StringPtrInput
// Number of replicas to run.
Replicas pulumi.IntPtrInput
// Docker Swarm restart policy, as a JSON object.
RestartPolicySwarm pulumi.StringPtrInput
// Docker Swarm rollback configuration, as a JSON object.
RollbackConfigSwarm pulumi.StringPtrInput
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrInput
// Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
SqldNode pulumi.StringPtrInput
// URL of the primary node, when `sqldNode` is `replica`.
SqldPrimaryUrl pulumi.StringPtrInput
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (LibsqlState) ElementType() reflect.Type {
return reflect.TypeOf((*libsqlState)(nil)).Elem()
}
type libsqlArgs struct {
// Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Override the container entrypoint command.
Command *string `pulumi:"command"`
// Hard CPU limit, for example `1`.
CpuLimit *string `pulumi:"cpuLimit"`
// Soft CPU reservation, for example `0.5`.
CpuReservation *string `pulumi:"cpuReservation"`
// Password for the database user.
DatabasePassword string `pulumi:"databasePassword"`
// Database user to create.
DatabaseUser string `pulumi:"databaseUser"`
// Free-form description.
Description *string `pulumi:"description"`
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork *bool `pulumi:"detachDokployNetwork"`
// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
DockerImage string `pulumi:"dockerImage"`
// Serve multiple logical databases from one instance through libSQL namespaces.
EnableNamespaces *bool `pulumi:"enableNamespaces"`
// Docker Swarm endpoint specification, as a JSON object.
EndpointSpecSwarm *string `pulumi:"endpointSpecSwarm"`
// Environment variables in `KEY=value` format, one per line.
Env *string `pulumi:"env"`
// Environment this database belongs to.
EnvironmentId string `pulumi:"environmentId"`
// Host port exposing the admin API.
ExternalAdminPort *int `pulumi:"externalAdminPort"`
// Host port exposing the gRPC replication endpoint.
ExternalGrpcPort *int `pulumi:"externalGrpcPort"`
// Host port exposing the HTTP API.
ExternalPort *int `pulumi:"externalPort"`
// Docker Swarm health check configuration, as a JSON object.
HealthCheckSwarm *string `pulumi:"healthCheckSwarm"`
// Docker Swarm service labels, as a JSON object.
LabelsSwarm *string `pulumi:"labelsSwarm"`
// Hard memory limit, for example `512m`.
MemoryLimit *string `pulumi:"memoryLimit"`
// Soft memory reservation, for example `256m`.
MemoryReservation *string `pulumi:"memoryReservation"`
// Docker Swarm service mode, as a JSON object.
ModeSwarm *string `pulumi:"modeSwarm"`
// Display name of the database.
Name *string `pulumi:"name"`
// IDs of additional Docker networks to attach.
NetworkIds []string `pulumi:"networkIds"`
// Docker Swarm network attachments, as a JSON array.
NetworkSwarm *string `pulumi:"networkSwarm"`
// Docker Swarm placement constraints, as a JSON object.
PlacementSwarm *string `pulumi:"placementSwarm"`
// Number of replicas to run.
Replicas *int `pulumi:"replicas"`
// Docker Swarm restart policy, as a JSON object.
RestartPolicySwarm *string `pulumi:"restartPolicySwarm"`
// Docker Swarm rollback configuration, as a JSON object.
RollbackConfigSwarm *string `pulumi:"rollbackConfigSwarm"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
// Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
SqldNode *string `pulumi:"sqldNode"`
// URL of the primary node, when `sqldNode` is `replica`.
SqldPrimaryUrl *string `pulumi:"sqldPrimaryUrl"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
// The set of arguments for constructing a Libsql resource.
type LibsqlArgs struct {
// Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Override the container entrypoint command.
Command pulumi.StringPtrInput
// Hard CPU limit, for example `1`.
CpuLimit pulumi.StringPtrInput
// Soft CPU reservation, for example `0.5`.
CpuReservation pulumi.StringPtrInput
// Password for the database user.
DatabasePassword pulumi.StringInput
// Database user to create.
DatabaseUser pulumi.StringInput
// Free-form description.
Description pulumi.StringPtrInput
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolPtrInput
// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
DockerImage pulumi.StringInput
// Serve multiple logical databases from one instance through libSQL namespaces.
EnableNamespaces pulumi.BoolPtrInput
// Docker Swarm endpoint specification, as a JSON object.
EndpointSpecSwarm pulumi.StringPtrInput
// Environment variables in `KEY=value` format, one per line.
Env pulumi.StringPtrInput
// Environment this database belongs to.
EnvironmentId pulumi.StringInput
// Host port exposing the admin API.
ExternalAdminPort pulumi.IntPtrInput
// Host port exposing the gRPC replication endpoint.
ExternalGrpcPort pulumi.IntPtrInput
// Host port exposing the HTTP API.
ExternalPort pulumi.IntPtrInput
// Docker Swarm health check configuration, as a JSON object.
HealthCheckSwarm pulumi.StringPtrInput
// Docker Swarm service labels, as a JSON object.
LabelsSwarm pulumi.StringPtrInput
// Hard memory limit, for example `512m`.
MemoryLimit pulumi.StringPtrInput
// Soft memory reservation, for example `256m`.
MemoryReservation pulumi.StringPtrInput
// Docker Swarm service mode, as a JSON object.
ModeSwarm pulumi.StringPtrInput
// Display name of the database.
Name pulumi.StringPtrInput
// IDs of additional Docker networks to attach.
NetworkIds pulumi.StringArrayInput
// Docker Swarm network attachments, as a JSON array.
NetworkSwarm pulumi.StringPtrInput
// Docker Swarm placement constraints, as a JSON object.
PlacementSwarm pulumi.StringPtrInput
// Number of replicas to run.
Replicas pulumi.IntPtrInput
// Docker Swarm restart policy, as a JSON object.
RestartPolicySwarm pulumi.StringPtrInput
// Docker Swarm rollback configuration, as a JSON object.
RollbackConfigSwarm pulumi.StringPtrInput
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrInput
// Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
SqldNode pulumi.StringPtrInput
// URL of the primary node, when `sqldNode` is `replica`.
SqldPrimaryUrl pulumi.StringPtrInput
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (LibsqlArgs) ElementType() reflect.Type {
return reflect.TypeOf((*libsqlArgs)(nil)).Elem()
}
type LibsqlInput interface {
pulumi.Input
ToLibsqlOutput() LibsqlOutput
ToLibsqlOutputWithContext(ctx context.Context) LibsqlOutput
}
func (*Libsql) ElementType() reflect.Type {
return reflect.TypeOf((**Libsql)(nil)).Elem()
}
func (i *Libsql) ToLibsqlOutput() LibsqlOutput {
return i.ToLibsqlOutputWithContext(context.Background())
}
func (i *Libsql) ToLibsqlOutputWithContext(ctx context.Context) LibsqlOutput {
return pulumi.ToOutputWithContext(ctx, i).(LibsqlOutput)
}
// LibsqlArrayInput is an input type that accepts LibsqlArray and LibsqlArrayOutput values.
// You can construct a concrete instance of `LibsqlArrayInput` via:
//
// LibsqlArray{ LibsqlArgs{...} }
type LibsqlArrayInput interface {
pulumi.Input
ToLibsqlArrayOutput() LibsqlArrayOutput
ToLibsqlArrayOutputWithContext(context.Context) LibsqlArrayOutput
}
type LibsqlArray []LibsqlInput
func (LibsqlArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Libsql)(nil)).Elem()
}
func (i LibsqlArray) ToLibsqlArrayOutput() LibsqlArrayOutput {
return i.ToLibsqlArrayOutputWithContext(context.Background())
}
func (i LibsqlArray) ToLibsqlArrayOutputWithContext(ctx context.Context) LibsqlArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(LibsqlArrayOutput)
}
// LibsqlMapInput is an input type that accepts LibsqlMap and LibsqlMapOutput values.
// You can construct a concrete instance of `LibsqlMapInput` via:
//
// LibsqlMap{ "key": LibsqlArgs{...} }
type LibsqlMapInput interface {
pulumi.Input
ToLibsqlMapOutput() LibsqlMapOutput
ToLibsqlMapOutputWithContext(context.Context) LibsqlMapOutput
}
type LibsqlMap map[string]LibsqlInput
func (LibsqlMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Libsql)(nil)).Elem()
}
func (i LibsqlMap) ToLibsqlMapOutput() LibsqlMapOutput {
return i.ToLibsqlMapOutputWithContext(context.Background())
}
func (i LibsqlMap) ToLibsqlMapOutputWithContext(ctx context.Context) LibsqlMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(LibsqlMapOutput)
}
type LibsqlOutput struct{ *pulumi.OutputState }
func (LibsqlOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Libsql)(nil)).Elem()
}
func (o LibsqlOutput) ToLibsqlOutput() LibsqlOutput {
return o
}
func (o LibsqlOutput) ToLibsqlOutputWithContext(ctx context.Context) LibsqlOutput {
return o
}
// Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.
func (o LibsqlOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
func (o LibsqlOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.ApplicationStatus }).(pulumi.StringOutput)
}
// Override the container entrypoint command.
func (o LibsqlOutput) Command() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.Command }).(pulumi.StringPtrOutput)
}
// Hard CPU limit, for example `1`.
func (o LibsqlOutput) CpuLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.CpuLimit }).(pulumi.StringPtrOutput)
}
// Soft CPU reservation, for example `0.5`.
func (o LibsqlOutput) CpuReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.CpuReservation }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the database was created.
func (o LibsqlOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Password for the database user.
func (o LibsqlOutput) DatabasePassword() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.DatabasePassword }).(pulumi.StringOutput)
}
// Database user to create.
func (o LibsqlOutput) DatabaseUser() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.DatabaseUser }).(pulumi.StringOutput)
}
// Free-form description.
func (o LibsqlOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Detach the service from the shared `dokploy-network`.
func (o LibsqlOutput) DetachDokployNetwork() pulumi.BoolOutput {
return o.ApplyT(func(v *Libsql) pulumi.BoolOutput { return v.DetachDokployNetwork }).(pulumi.BoolOutput)
}
// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
func (o LibsqlOutput) DockerImage() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.DockerImage }).(pulumi.StringOutput)
}
// Serve multiple logical databases from one instance through libSQL namespaces.
func (o LibsqlOutput) EnableNamespaces() pulumi.BoolOutput {
return o.ApplyT(func(v *Libsql) pulumi.BoolOutput { return v.EnableNamespaces }).(pulumi.BoolOutput)
}
// Docker Swarm endpoint specification, as a JSON object.
func (o LibsqlOutput) EndpointSpecSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.EndpointSpecSwarm }).(pulumi.StringPtrOutput)
}
// Environment variables in `KEY=value` format, one per line.
func (o LibsqlOutput) Env() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput)
}
// Environment this database belongs to.
func (o LibsqlOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Host port exposing the admin API.
func (o LibsqlOutput) ExternalAdminPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.ExternalAdminPort }).(pulumi.IntPtrOutput)
}
// Host port exposing the gRPC replication endpoint.
func (o LibsqlOutput) ExternalGrpcPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.ExternalGrpcPort }).(pulumi.IntPtrOutput)
}
// Host port exposing the HTTP API.
func (o LibsqlOutput) ExternalPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.ExternalPort }).(pulumi.IntPtrOutput)
}
// Docker Swarm health check configuration, as a JSON object.
func (o LibsqlOutput) HealthCheckSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.HealthCheckSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm service labels, as a JSON object.
func (o LibsqlOutput) LabelsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.LabelsSwarm }).(pulumi.StringPtrOutput)
}
// Hard memory limit, for example `512m`.
func (o LibsqlOutput) MemoryLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.MemoryLimit }).(pulumi.StringPtrOutput)
}
// Soft memory reservation, for example `256m`.
func (o LibsqlOutput) MemoryReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.MemoryReservation }).(pulumi.StringPtrOutput)
}
// Docker Swarm service mode, as a JSON object.
func (o LibsqlOutput) ModeSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.ModeSwarm }).(pulumi.StringPtrOutput)
}
// Display name of the database.
func (o LibsqlOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// IDs of additional Docker networks to attach.
func (o LibsqlOutput) NetworkIds() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringArrayOutput { return v.NetworkIds }).(pulumi.StringArrayOutput)
}
// Docker Swarm network attachments, as a JSON array.
func (o LibsqlOutput) NetworkSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.NetworkSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm placement constraints, as a JSON object.
func (o LibsqlOutput) PlacementSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.PlacementSwarm }).(pulumi.StringPtrOutput)
}
// Number of replicas to run.
func (o LibsqlOutput) Replicas() pulumi.IntOutput {
return o.ApplyT(func(v *Libsql) pulumi.IntOutput { return v.Replicas }).(pulumi.IntOutput)
}
// Docker Swarm restart policy, as a JSON object.
func (o LibsqlOutput) RestartPolicySwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.RestartPolicySwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rollback configuration, as a JSON object.
func (o LibsqlOutput) RollbackConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.RollbackConfigSwarm }).(pulumi.StringPtrOutput)
}
// Remote server to deploy on. Omit to use the Dokploy host itself.
func (o LibsqlOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
func (o LibsqlOutput) SqldNode() pulumi.StringOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.SqldNode }).(pulumi.StringOutput)
}
// URL of the primary node, when `sqldNode` is `replica`.
func (o LibsqlOutput) SqldPrimaryUrl() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.SqldPrimaryUrl }).(pulumi.StringPtrOutput)
}
// Grace period in nanoseconds before a container is killed.
func (o LibsqlOutput) StopGracePeriodSwarm() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.StopGracePeriodSwarm }).(pulumi.IntPtrOutput)
}
// Docker Swarm rolling update configuration, as a JSON object.
func (o LibsqlOutput) UpdateConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.UpdateConfigSwarm }).(pulumi.StringPtrOutput)
}
type LibsqlArrayOutput struct{ *pulumi.OutputState }
func (LibsqlArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Libsql)(nil)).Elem()
}
func (o LibsqlArrayOutput) ToLibsqlArrayOutput() LibsqlArrayOutput {
return o
}
func (o LibsqlArrayOutput) ToLibsqlArrayOutputWithContext(ctx context.Context) LibsqlArrayOutput {
return o
}
func (o LibsqlArrayOutput) Index(i pulumi.IntInput) LibsqlOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Libsql {
return vs[0].([]*Libsql)[vs[1].(int)]
}).(LibsqlOutput)
}
type LibsqlMapOutput struct{ *pulumi.OutputState }
func (LibsqlMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Libsql)(nil)).Elem()
}
func (o LibsqlMapOutput) ToLibsqlMapOutput() LibsqlMapOutput {
return o
}
func (o LibsqlMapOutput) ToLibsqlMapOutputWithContext(ctx context.Context) LibsqlMapOutput {
return o
}
func (o LibsqlMapOutput) MapIndex(k pulumi.StringInput) LibsqlOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Libsql {
return vs[0].(map[string]*Libsql)[vs[1].(string)]
}).(LibsqlOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*LibsqlInput)(nil)).Elem(), &Libsql{})
pulumi.RegisterInputType(reflect.TypeOf((*LibsqlArrayInput)(nil)).Elem(), LibsqlArray{})
pulumi.RegisterInputType(reflect.TypeOf((*LibsqlMapInput)(nil)).Elem(), LibsqlMap{})
pulumi.RegisterOutputType(LibsqlOutput{})
pulumi.RegisterOutputType(LibsqlArrayOutput{})
pulumi.RegisterOutputType(LibsqlMapOutput{})
}
+5
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A managed MariaDB instance running on Dokploy.
//
// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.
//
// > Credentials are stored in Terraform state. Use a state backend with encryption at rest.
type MariaDb struct {
pulumi.CustomResourceState
+5
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A managed MongoDB instance running on Dokploy.
//
// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.
//
// > Credentials are stored in Terraform state. Use a state backend with encryption at rest.
type Mongo struct {
pulumi.CustomResourceState
+13 -6
View File
@@ -12,6 +12,13 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A volume, bind mount, or config file attached to a Dokploy service.
//
// * `type = "volume"` — a named Docker volume; set `volumeName`.
// * `type = "bind"` — a path on the host; set `hostPath`.
// * `type = "file"` — a file rendered from `content`; set `filePath`.
//
// > **A `volume` mount must set `volumeName`.** Dokploy hands an unset name to Docker as an empty source, which creates a fresh anonymous volume on every deploy and orphans the previous one — the data never survives a redeploy. The provider rejects that combination at plan time.
type Mount struct {
pulumi.CustomResourceState
@@ -25,7 +32,7 @@ type Mount struct {
MountPath pulumi.StringOutput `pulumi:"mountPath"`
// ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
ServiceId pulumi.StringOutput `pulumi:"serviceId"`
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`.
ServiceType pulumi.StringOutput `pulumi:"serviceType"`
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type pulumi.StringOutput `pulumi:"type"`
@@ -85,7 +92,7 @@ type mountState struct {
MountPath *string `pulumi:"mountPath"`
// ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
ServiceId *string `pulumi:"serviceId"`
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`.
ServiceType *string `pulumi:"serviceType"`
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type *string `pulumi:"type"`
@@ -104,7 +111,7 @@ type MountState struct {
MountPath pulumi.StringPtrInput
// ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
ServiceId pulumi.StringPtrInput
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`.
ServiceType pulumi.StringPtrInput
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type pulumi.StringPtrInput
@@ -127,7 +134,7 @@ type mountArgs struct {
MountPath string `pulumi:"mountPath"`
// ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
ServiceId string `pulumi:"serviceId"`
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`.
ServiceType string `pulumi:"serviceType"`
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type string `pulumi:"type"`
@@ -147,7 +154,7 @@ type MountArgs struct {
MountPath pulumi.StringInput
// ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
ServiceId pulumi.StringInput
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`.
ServiceType pulumi.StringInput
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type pulumi.StringInput
@@ -267,7 +274,7 @@ func (o MountOutput) ServiceId() pulumi.StringOutput {
return o.ApplyT(func(v *Mount) pulumi.StringOutput { return v.ServiceId }).(pulumi.StringOutput)
}
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`.
func (o MountOutput) ServiceType() pulumi.StringOutput {
return o.ApplyT(func(v *Mount) pulumi.StringOutput { return v.ServiceType }).(pulumi.StringOutput)
}
+5
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A managed MySQL instance running on Dokploy.
//
// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.
//
// > Credentials are stored in Terraform state. Use a state backend with encryption at rest.
type MySql struct {
pulumi.CustomResourceState
+361
View File
@@ -0,0 +1,361 @@
// Code generated by pulumi-language-go DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package dokploy
import (
"context"
"reflect"
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A Docker network managed by Dokploy.
//
// Attach services to it with `networkIds` on `Application`, `Compose` and the database resources. Every service also joins the shared `dokploy-network` unless `detachDokployNetwork` is set.
//
// > Docker networks are immutable. Dokploy has no update endpoint, so changing any attribute replaces the network — which detaches the services currently using it until they redeploy.
type Network struct {
pulumi.CustomResourceState
// Allow standalone containers to attach to an overlay network.
Attachable pulumi.BoolOutput `pulumi:"attachable"`
// RFC 3339 timestamp of when the network was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
Driver pulumi.StringOutput `pulumi:"driver"`
// Enable IPv4 address allocation.
EnableIpv4 pulumi.BoolOutput `pulumi:"enableIpv4"`
// Enable IPv6 address allocation.
EnableIpv6 pulumi.BoolOutput `pulumi:"enableIpv6"`
// Isolate the network from external access.
Internal pulumi.BoolOutput `pulumi:"internal"`
// Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
Ipam pulumi.StringPtrOutput `pulumi:"ipam"`
// Maximum transmission unit for the network. Leave unset to use Docker's default.
Mtu pulumi.IntPtrOutput `pulumi:"mtu"`
// Name of the Docker network.
Name pulumi.StringOutput `pulumi:"name"`
// Organization that owns the network.
OrganizationId pulumi.StringOutput `pulumi:"organizationId"`
// Remote server to create the network on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
}
// NewNetwork registers a new resource with the given unique name, arguments, and options.
func NewNetwork(ctx *pulumi.Context,
name string, args *NetworkArgs, opts ...pulumi.ResourceOption) (*Network, error) {
if args == nil {
args = &NetworkArgs{}
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Network
err := ctx.RegisterResource("dokploy:index/network:Network", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetNetwork gets an existing Network resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetNetwork(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *NetworkState, opts ...pulumi.ResourceOption) (*Network, error) {
var resource Network
err := ctx.ReadResource("dokploy:index/network:Network", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Network resources.
type networkState struct {
// Allow standalone containers to attach to an overlay network.
Attachable *bool `pulumi:"attachable"`
// RFC 3339 timestamp of when the network was created.
CreatedAt *string `pulumi:"createdAt"`
// Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
Driver *string `pulumi:"driver"`
// Enable IPv4 address allocation.
EnableIpv4 *bool `pulumi:"enableIpv4"`
// Enable IPv6 address allocation.
EnableIpv6 *bool `pulumi:"enableIpv6"`
// Isolate the network from external access.
Internal *bool `pulumi:"internal"`
// Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
Ipam *string `pulumi:"ipam"`
// Maximum transmission unit for the network. Leave unset to use Docker's default.
Mtu *int `pulumi:"mtu"`
// Name of the Docker network.
Name *string `pulumi:"name"`
// Organization that owns the network.
OrganizationId *string `pulumi:"organizationId"`
// Remote server to create the network on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
}
type NetworkState struct {
// Allow standalone containers to attach to an overlay network.
Attachable pulumi.BoolPtrInput
// RFC 3339 timestamp of when the network was created.
CreatedAt pulumi.StringPtrInput
// Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
Driver pulumi.StringPtrInput
// Enable IPv4 address allocation.
EnableIpv4 pulumi.BoolPtrInput
// Enable IPv6 address allocation.
EnableIpv6 pulumi.BoolPtrInput
// Isolate the network from external access.
Internal pulumi.BoolPtrInput
// Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
Ipam pulumi.StringPtrInput
// Maximum transmission unit for the network. Leave unset to use Docker's default.
Mtu pulumi.IntPtrInput
// Name of the Docker network.
Name pulumi.StringPtrInput
// Organization that owns the network.
OrganizationId pulumi.StringPtrInput
// Remote server to create the network on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrInput
}
func (NetworkState) ElementType() reflect.Type {
return reflect.TypeOf((*networkState)(nil)).Elem()
}
type networkArgs struct {
// Allow standalone containers to attach to an overlay network.
Attachable *bool `pulumi:"attachable"`
// Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
Driver *string `pulumi:"driver"`
// Enable IPv4 address allocation.
EnableIpv4 *bool `pulumi:"enableIpv4"`
// Enable IPv6 address allocation.
EnableIpv6 *bool `pulumi:"enableIpv6"`
// Isolate the network from external access.
Internal *bool `pulumi:"internal"`
// Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
Ipam *string `pulumi:"ipam"`
// Maximum transmission unit for the network. Leave unset to use Docker's default.
Mtu *int `pulumi:"mtu"`
// Name of the Docker network.
Name *string `pulumi:"name"`
// Remote server to create the network on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
}
// The set of arguments for constructing a Network resource.
type NetworkArgs struct {
// Allow standalone containers to attach to an overlay network.
Attachable pulumi.BoolPtrInput
// Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
Driver pulumi.StringPtrInput
// Enable IPv4 address allocation.
EnableIpv4 pulumi.BoolPtrInput
// Enable IPv6 address allocation.
EnableIpv6 pulumi.BoolPtrInput
// Isolate the network from external access.
Internal pulumi.BoolPtrInput
// Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
Ipam pulumi.StringPtrInput
// Maximum transmission unit for the network. Leave unset to use Docker's default.
Mtu pulumi.IntPtrInput
// Name of the Docker network.
Name pulumi.StringPtrInput
// Remote server to create the network on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrInput
}
func (NetworkArgs) ElementType() reflect.Type {
return reflect.TypeOf((*networkArgs)(nil)).Elem()
}
type NetworkInput interface {
pulumi.Input
ToNetworkOutput() NetworkOutput
ToNetworkOutputWithContext(ctx context.Context) NetworkOutput
}
func (*Network) ElementType() reflect.Type {
return reflect.TypeOf((**Network)(nil)).Elem()
}
func (i *Network) ToNetworkOutput() NetworkOutput {
return i.ToNetworkOutputWithContext(context.Background())
}
func (i *Network) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput {
return pulumi.ToOutputWithContext(ctx, i).(NetworkOutput)
}
// NetworkArrayInput is an input type that accepts NetworkArray and NetworkArrayOutput values.
// You can construct a concrete instance of `NetworkArrayInput` via:
//
// NetworkArray{ NetworkArgs{...} }
type NetworkArrayInput interface {
pulumi.Input
ToNetworkArrayOutput() NetworkArrayOutput
ToNetworkArrayOutputWithContext(context.Context) NetworkArrayOutput
}
type NetworkArray []NetworkInput
func (NetworkArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Network)(nil)).Elem()
}
func (i NetworkArray) ToNetworkArrayOutput() NetworkArrayOutput {
return i.ToNetworkArrayOutputWithContext(context.Background())
}
func (i NetworkArray) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(NetworkArrayOutput)
}
// NetworkMapInput is an input type that accepts NetworkMap and NetworkMapOutput values.
// You can construct a concrete instance of `NetworkMapInput` via:
//
// NetworkMap{ "key": NetworkArgs{...} }
type NetworkMapInput interface {
pulumi.Input
ToNetworkMapOutput() NetworkMapOutput
ToNetworkMapOutputWithContext(context.Context) NetworkMapOutput
}
type NetworkMap map[string]NetworkInput
func (NetworkMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Network)(nil)).Elem()
}
func (i NetworkMap) ToNetworkMapOutput() NetworkMapOutput {
return i.ToNetworkMapOutputWithContext(context.Background())
}
func (i NetworkMap) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(NetworkMapOutput)
}
type NetworkOutput struct{ *pulumi.OutputState }
func (NetworkOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Network)(nil)).Elem()
}
func (o NetworkOutput) ToNetworkOutput() NetworkOutput {
return o
}
func (o NetworkOutput) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput {
return o
}
// Allow standalone containers to attach to an overlay network.
func (o NetworkOutput) Attachable() pulumi.BoolOutput {
return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.Attachable }).(pulumi.BoolOutput)
}
// RFC 3339 timestamp of when the network was created.
func (o NetworkOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
func (o NetworkOutput) Driver() pulumi.StringOutput {
return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Driver }).(pulumi.StringOutput)
}
// Enable IPv4 address allocation.
func (o NetworkOutput) EnableIpv4() pulumi.BoolOutput {
return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.EnableIpv4 }).(pulumi.BoolOutput)
}
// Enable IPv6 address allocation.
func (o NetworkOutput) EnableIpv6() pulumi.BoolOutput {
return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.EnableIpv6 }).(pulumi.BoolOutput)
}
// Isolate the network from external access.
func (o NetworkOutput) Internal() pulumi.BoolOutput {
return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.Internal }).(pulumi.BoolOutput)
}
// Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
func (o NetworkOutput) Ipam() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.Ipam }).(pulumi.StringPtrOutput)
}
// Maximum transmission unit for the network. Leave unset to use Docker's default.
func (o NetworkOutput) Mtu() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Network) pulumi.IntPtrOutput { return v.Mtu }).(pulumi.IntPtrOutput)
}
// Name of the Docker network.
func (o NetworkOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// Organization that owns the network.
func (o NetworkOutput) OrganizationId() pulumi.StringOutput {
return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput)
}
// Remote server to create the network on. Omit to use the Dokploy host itself.
func (o NetworkOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
type NetworkArrayOutput struct{ *pulumi.OutputState }
func (NetworkArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Network)(nil)).Elem()
}
func (o NetworkArrayOutput) ToNetworkArrayOutput() NetworkArrayOutput {
return o
}
func (o NetworkArrayOutput) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput {
return o
}
func (o NetworkArrayOutput) Index(i pulumi.IntInput) NetworkOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Network {
return vs[0].([]*Network)[vs[1].(int)]
}).(NetworkOutput)
}
type NetworkMapOutput struct{ *pulumi.OutputState }
func (NetworkMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Network)(nil)).Elem()
}
func (o NetworkMapOutput) ToNetworkMapOutput() NetworkMapOutput {
return o
}
func (o NetworkMapOutput) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput {
return o
}
func (o NetworkMapOutput) MapIndex(k pulumi.StringInput) NetworkOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Network {
return vs[0].(map[string]*Network)[vs[1].(string)]
}).(NetworkOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*NetworkInput)(nil)).Elem(), &Network{})
pulumi.RegisterInputType(reflect.TypeOf((*NetworkArrayInput)(nil)).Elem(), NetworkArray{})
pulumi.RegisterInputType(reflect.TypeOf((*NetworkMapInput)(nil)).Elem(), NetworkMap{})
pulumi.RegisterOutputType(NetworkOutput{})
pulumi.RegisterOutputType(NetworkArrayOutput{})
pulumi.RegisterOutputType(NetworkMapOutput{})
}
+1
View File
@@ -12,6 +12,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A published port that exposes an application directly on the host, bypassing Traefik.
type Port struct {
pulumi.CustomResourceState
+5
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A managed PostgreSQL instance running on Dokploy.
//
// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.
//
// > Credentials are stored in Terraform state. Use a state backend with encryption at rest.
type Postgres struct {
pulumi.CustomResourceState
+3
View File
@@ -11,6 +11,9 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A Dokploy project: the top-level container for environments and services.
//
// Creating a project automatically creates a default `production` environment. Its ID is exposed as `defaultEnvironmentId`, so services can be attached without declaring a separate `Environment` resource.
type Project struct {
pulumi.CustomResourceState
+1 -1
View File
@@ -1,6 +1,6 @@
{
"resource": true,
"name": "dokploy",
"version": "0.1.0",
"version": "0.2.0",
"server": "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}"
}
+1
View File
@@ -12,6 +12,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A Traefik redirect rule attached to an application.
type Redirect struct {
pulumi.CustomResourceState
+5
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A managed Redis instance running on Dokploy.
//
// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.
//
// > Credentials are stored in Terraform state. Use a state backend with encryption at rest.
type Redis struct {
pulumi.CustomResourceState
+1
View File
@@ -12,6 +12,7 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A container registry that Dokploy pushes built images to and pulls them from.
type Registry struct {
pulumi.CustomResourceState
+437
View File
@@ -0,0 +1,437 @@
// Code generated by pulumi-language-go DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package dokploy
import (
"context"
"reflect"
"errors"
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A cron job Dokploy runs on a schedule.
//
// `scheduleType` selects where the command runs:
//
// * `application` — inside a running application container; set `applicationId`.
// * `compose` — inside one service of a Compose stack; set `composeId` and `serviceName`.
// * `server` — on a remote server; set `serverId`.
// * `dokploy-server` — on the Dokploy host itself.
//
// > A schedule targeting an application runs inside its container, so the container has to be running when the cron fires.
type Schedule struct {
pulumi.CustomResourceState
// Docker service name the schedule targets. Derived by Dokploy when omitted.
AppName pulumi.StringOutput `pulumi:"appName"`
// Application this schedule belongs to.
ApplicationId pulumi.StringPtrOutput `pulumi:"applicationId"`
// Command to run.
Command pulumi.StringOutput `pulumi:"command"`
// Compose stack this schedule belongs to.
ComposeId pulumi.StringPtrOutput `pulumi:"composeId"`
// RFC 3339 timestamp of when the schedule was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Standard five-field cron expression, for example `0 3 * * *`.
CronExpression pulumi.StringOutput `pulumi:"cronExpression"`
// Free-form description.
Description pulumi.StringPtrOutput `pulumi:"description"`
// Whether the schedule is active.
Enabled pulumi.BoolOutput `pulumi:"enabled"`
// Display name of the schedule.
Name pulumi.StringOutput `pulumi:"name"`
// Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
ScheduleType pulumi.StringOutput `pulumi:"scheduleType"`
// Multi-line script to run instead of a single command.
Script pulumi.StringPtrOutput `pulumi:"script"`
// Server this schedule runs on.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
// Service inside a Compose stack to run the command in.
ServiceName pulumi.StringPtrOutput `pulumi:"serviceName"`
// Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
ShellType pulumi.StringOutput `pulumi:"shellType"`
// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
Timezone pulumi.StringPtrOutput `pulumi:"timezone"`
}
// NewSchedule registers a new resource with the given unique name, arguments, and options.
func NewSchedule(ctx *pulumi.Context,
name string, args *ScheduleArgs, opts ...pulumi.ResourceOption) (*Schedule, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.Command == nil {
return nil, errors.New("invalid value for required argument 'Command'")
}
if args.CronExpression == nil {
return nil, errors.New("invalid value for required argument 'CronExpression'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Schedule
err := ctx.RegisterResource("dokploy:index/schedule:Schedule", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetSchedule gets an existing Schedule resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetSchedule(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *ScheduleState, opts ...pulumi.ResourceOption) (*Schedule, error) {
var resource Schedule
err := ctx.ReadResource("dokploy:index/schedule:Schedule", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Schedule resources.
type scheduleState struct {
// Docker service name the schedule targets. Derived by Dokploy when omitted.
AppName *string `pulumi:"appName"`
// Application this schedule belongs to.
ApplicationId *string `pulumi:"applicationId"`
// Command to run.
Command *string `pulumi:"command"`
// Compose stack this schedule belongs to.
ComposeId *string `pulumi:"composeId"`
// RFC 3339 timestamp of when the schedule was created.
CreatedAt *string `pulumi:"createdAt"`
// Standard five-field cron expression, for example `0 3 * * *`.
CronExpression *string `pulumi:"cronExpression"`
// Free-form description.
Description *string `pulumi:"description"`
// Whether the schedule is active.
Enabled *bool `pulumi:"enabled"`
// Display name of the schedule.
Name *string `pulumi:"name"`
// Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
ScheduleType *string `pulumi:"scheduleType"`
// Multi-line script to run instead of a single command.
Script *string `pulumi:"script"`
// Server this schedule runs on.
ServerId *string `pulumi:"serverId"`
// Service inside a Compose stack to run the command in.
ServiceName *string `pulumi:"serviceName"`
// Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
ShellType *string `pulumi:"shellType"`
// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
Timezone *string `pulumi:"timezone"`
}
type ScheduleState struct {
// Docker service name the schedule targets. Derived by Dokploy when omitted.
AppName pulumi.StringPtrInput
// Application this schedule belongs to.
ApplicationId pulumi.StringPtrInput
// Command to run.
Command pulumi.StringPtrInput
// Compose stack this schedule belongs to.
ComposeId pulumi.StringPtrInput
// RFC 3339 timestamp of when the schedule was created.
CreatedAt pulumi.StringPtrInput
// Standard five-field cron expression, for example `0 3 * * *`.
CronExpression pulumi.StringPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Whether the schedule is active.
Enabled pulumi.BoolPtrInput
// Display name of the schedule.
Name pulumi.StringPtrInput
// Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
ScheduleType pulumi.StringPtrInput
// Multi-line script to run instead of a single command.
Script pulumi.StringPtrInput
// Server this schedule runs on.
ServerId pulumi.StringPtrInput
// Service inside a Compose stack to run the command in.
ServiceName pulumi.StringPtrInput
// Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
ShellType pulumi.StringPtrInput
// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
Timezone pulumi.StringPtrInput
}
func (ScheduleState) ElementType() reflect.Type {
return reflect.TypeOf((*scheduleState)(nil)).Elem()
}
type scheduleArgs struct {
// Docker service name the schedule targets. Derived by Dokploy when omitted.
AppName *string `pulumi:"appName"`
// Application this schedule belongs to.
ApplicationId *string `pulumi:"applicationId"`
// Command to run.
Command string `pulumi:"command"`
// Compose stack this schedule belongs to.
ComposeId *string `pulumi:"composeId"`
// Standard five-field cron expression, for example `0 3 * * *`.
CronExpression string `pulumi:"cronExpression"`
// Free-form description.
Description *string `pulumi:"description"`
// Whether the schedule is active.
Enabled *bool `pulumi:"enabled"`
// Display name of the schedule.
Name *string `pulumi:"name"`
// Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
ScheduleType *string `pulumi:"scheduleType"`
// Multi-line script to run instead of a single command.
Script *string `pulumi:"script"`
// Server this schedule runs on.
ServerId *string `pulumi:"serverId"`
// Service inside a Compose stack to run the command in.
ServiceName *string `pulumi:"serviceName"`
// Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
ShellType *string `pulumi:"shellType"`
// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
Timezone *string `pulumi:"timezone"`
}
// The set of arguments for constructing a Schedule resource.
type ScheduleArgs struct {
// Docker service name the schedule targets. Derived by Dokploy when omitted.
AppName pulumi.StringPtrInput
// Application this schedule belongs to.
ApplicationId pulumi.StringPtrInput
// Command to run.
Command pulumi.StringInput
// Compose stack this schedule belongs to.
ComposeId pulumi.StringPtrInput
// Standard five-field cron expression, for example `0 3 * * *`.
CronExpression pulumi.StringInput
// Free-form description.
Description pulumi.StringPtrInput
// Whether the schedule is active.
Enabled pulumi.BoolPtrInput
// Display name of the schedule.
Name pulumi.StringPtrInput
// Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
ScheduleType pulumi.StringPtrInput
// Multi-line script to run instead of a single command.
Script pulumi.StringPtrInput
// Server this schedule runs on.
ServerId pulumi.StringPtrInput
// Service inside a Compose stack to run the command in.
ServiceName pulumi.StringPtrInput
// Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
ShellType pulumi.StringPtrInput
// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
Timezone pulumi.StringPtrInput
}
func (ScheduleArgs) ElementType() reflect.Type {
return reflect.TypeOf((*scheduleArgs)(nil)).Elem()
}
type ScheduleInput interface {
pulumi.Input
ToScheduleOutput() ScheduleOutput
ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput
}
func (*Schedule) ElementType() reflect.Type {
return reflect.TypeOf((**Schedule)(nil)).Elem()
}
func (i *Schedule) ToScheduleOutput() ScheduleOutput {
return i.ToScheduleOutputWithContext(context.Background())
}
func (i *Schedule) ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput {
return pulumi.ToOutputWithContext(ctx, i).(ScheduleOutput)
}
// ScheduleArrayInput is an input type that accepts ScheduleArray and ScheduleArrayOutput values.
// You can construct a concrete instance of `ScheduleArrayInput` via:
//
// ScheduleArray{ ScheduleArgs{...} }
type ScheduleArrayInput interface {
pulumi.Input
ToScheduleArrayOutput() ScheduleArrayOutput
ToScheduleArrayOutputWithContext(context.Context) ScheduleArrayOutput
}
type ScheduleArray []ScheduleInput
func (ScheduleArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Schedule)(nil)).Elem()
}
func (i ScheduleArray) ToScheduleArrayOutput() ScheduleArrayOutput {
return i.ToScheduleArrayOutputWithContext(context.Background())
}
func (i ScheduleArray) ToScheduleArrayOutputWithContext(ctx context.Context) ScheduleArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(ScheduleArrayOutput)
}
// ScheduleMapInput is an input type that accepts ScheduleMap and ScheduleMapOutput values.
// You can construct a concrete instance of `ScheduleMapInput` via:
//
// ScheduleMap{ "key": ScheduleArgs{...} }
type ScheduleMapInput interface {
pulumi.Input
ToScheduleMapOutput() ScheduleMapOutput
ToScheduleMapOutputWithContext(context.Context) ScheduleMapOutput
}
type ScheduleMap map[string]ScheduleInput
func (ScheduleMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Schedule)(nil)).Elem()
}
func (i ScheduleMap) ToScheduleMapOutput() ScheduleMapOutput {
return i.ToScheduleMapOutputWithContext(context.Background())
}
func (i ScheduleMap) ToScheduleMapOutputWithContext(ctx context.Context) ScheduleMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(ScheduleMapOutput)
}
type ScheduleOutput struct{ *pulumi.OutputState }
func (ScheduleOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Schedule)(nil)).Elem()
}
func (o ScheduleOutput) ToScheduleOutput() ScheduleOutput {
return o
}
func (o ScheduleOutput) ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput {
return o
}
// Docker service name the schedule targets. Derived by Dokploy when omitted.
func (o ScheduleOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Application this schedule belongs to.
func (o ScheduleOutput) ApplicationId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ApplicationId }).(pulumi.StringPtrOutput)
}
// Command to run.
func (o ScheduleOutput) Command() pulumi.StringOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.Command }).(pulumi.StringOutput)
}
// Compose stack this schedule belongs to.
func (o ScheduleOutput) ComposeId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ComposeId }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the schedule was created.
func (o ScheduleOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Standard five-field cron expression, for example `0 3 * * *`.
func (o ScheduleOutput) CronExpression() pulumi.StringOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.CronExpression }).(pulumi.StringOutput)
}
// Free-form description.
func (o ScheduleOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Whether the schedule is active.
func (o ScheduleOutput) Enabled() pulumi.BoolOutput {
return o.ApplyT(func(v *Schedule) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput)
}
// Display name of the schedule.
func (o ScheduleOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
func (o ScheduleOutput) ScheduleType() pulumi.StringOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.ScheduleType }).(pulumi.StringOutput)
}
// Multi-line script to run instead of a single command.
func (o ScheduleOutput) Script() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Script }).(pulumi.StringPtrOutput)
}
// Server this schedule runs on.
func (o ScheduleOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Service inside a Compose stack to run the command in.
func (o ScheduleOutput) ServiceName() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ServiceName }).(pulumi.StringPtrOutput)
}
// Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
func (o ScheduleOutput) ShellType() pulumi.StringOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.ShellType }).(pulumi.StringOutput)
}
// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
func (o ScheduleOutput) Timezone() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Timezone }).(pulumi.StringPtrOutput)
}
type ScheduleArrayOutput struct{ *pulumi.OutputState }
func (ScheduleArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Schedule)(nil)).Elem()
}
func (o ScheduleArrayOutput) ToScheduleArrayOutput() ScheduleArrayOutput {
return o
}
func (o ScheduleArrayOutput) ToScheduleArrayOutputWithContext(ctx context.Context) ScheduleArrayOutput {
return o
}
func (o ScheduleArrayOutput) Index(i pulumi.IntInput) ScheduleOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Schedule {
return vs[0].([]*Schedule)[vs[1].(int)]
}).(ScheduleOutput)
}
type ScheduleMapOutput struct{ *pulumi.OutputState }
func (ScheduleMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Schedule)(nil)).Elem()
}
func (o ScheduleMapOutput) ToScheduleMapOutput() ScheduleMapOutput {
return o
}
func (o ScheduleMapOutput) ToScheduleMapOutputWithContext(ctx context.Context) ScheduleMapOutput {
return o
}
func (o ScheduleMapOutput) MapIndex(k pulumi.StringInput) ScheduleOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Schedule {
return vs[0].(map[string]*Schedule)[vs[1].(string)]
}).(ScheduleOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*ScheduleInput)(nil)).Elem(), &Schedule{})
pulumi.RegisterInputType(reflect.TypeOf((*ScheduleArrayInput)(nil)).Elem(), ScheduleArray{})
pulumi.RegisterInputType(reflect.TypeOf((*ScheduleMapInput)(nil)).Elem(), ScheduleMap{})
pulumi.RegisterOutputType(ScheduleOutput{})
pulumi.RegisterOutputType(ScheduleArrayOutput{})
pulumi.RegisterOutputType(ScheduleMapOutput{})
}
+3
View File
@@ -12,6 +12,9 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// HTTP basic authentication credentials protecting an application's domains.
//
// > Dokploy stores the password hashed and does not return it. The value in Terraform state is the one you configured.
type Security struct {
pulumi.CustomResourceState
+5
View File
@@ -12,6 +12,11 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// An SSH key pair Dokploy uses to clone private Git repositories and to reach remote servers.
//
// > The private key is stored in Terraform state. Use a state backend with encryption at rest.
//
// > Dokploy's update endpoint only accepts `name` and `description`. Changing either key forces a new resource.
type SshKey struct {
pulumi.CustomResourceState
+296
View File
@@ -0,0 +1,296 @@
// Code generated by pulumi-language-go DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package dokploy
import (
"context"
"reflect"
"errors"
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// An external secret manager Dokploy resolves environment variables from at deploy time.
//
// Reference a secret from any `env` value with `${{vault.<scope>.<key>}}`. The value is fetched when the deployment runs and is never stored in Dokploy — so rotating it in the vault takes effect on the next deploy with no Terraform change.
//
// Supported `providerType` values: `hashicorp` (Vault/OpenBao), `infisical`, `aws` (Secrets Manager), `doppler`, `azure` (Key Vault) and `scaleway`.
type VaultProvider struct {
pulumi.CustomResourceState
// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
Assignments pulumi.StringOutput `pulumi:"assignments"`
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config pulumi.StringOutput `pulumi:"config"`
// RFC 3339 timestamp of when the connection was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Name of the connection, unique within the organization.
Name pulumi.StringOutput `pulumi:"name"`
// Organization that owns the connection.
OrganizationId pulumi.StringOutput `pulumi:"organizationId"`
// Provider kind derived from `config`.
ProviderType pulumi.StringOutput `pulumi:"providerType"`
}
// NewVaultProvider registers a new resource with the given unique name, arguments, and options.
func NewVaultProvider(ctx *pulumi.Context,
name string, args *VaultProviderArgs, opts ...pulumi.ResourceOption) (*VaultProvider, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.Assignments == nil {
return nil, errors.New("invalid value for required argument 'Assignments'")
}
if args.Config == nil {
return nil, errors.New("invalid value for required argument 'Config'")
}
if args.Config != nil {
args.Config = pulumi.ToSecret(args.Config).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"config",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource VaultProvider
err := ctx.RegisterResource("dokploy:index/vaultProvider:VaultProvider", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetVaultProvider gets an existing VaultProvider resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetVaultProvider(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *VaultProviderState, opts ...pulumi.ResourceOption) (*VaultProvider, error) {
var resource VaultProvider
err := ctx.ReadResource("dokploy:index/vaultProvider:VaultProvider", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering VaultProvider resources.
type vaultProviderState struct {
// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
Assignments *string `pulumi:"assignments"`
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config *string `pulumi:"config"`
// RFC 3339 timestamp of when the connection was created.
CreatedAt *string `pulumi:"createdAt"`
// Name of the connection, unique within the organization.
Name *string `pulumi:"name"`
// Organization that owns the connection.
OrganizationId *string `pulumi:"organizationId"`
// Provider kind derived from `config`.
ProviderType *string `pulumi:"providerType"`
}
type VaultProviderState struct {
// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
Assignments pulumi.StringPtrInput
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config pulumi.StringPtrInput
// RFC 3339 timestamp of when the connection was created.
CreatedAt pulumi.StringPtrInput
// Name of the connection, unique within the organization.
Name pulumi.StringPtrInput
// Organization that owns the connection.
OrganizationId pulumi.StringPtrInput
// Provider kind derived from `config`.
ProviderType pulumi.StringPtrInput
}
func (VaultProviderState) ElementType() reflect.Type {
return reflect.TypeOf((*vaultProviderState)(nil)).Elem()
}
type vaultProviderArgs struct {
// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
Assignments string `pulumi:"assignments"`
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config string `pulumi:"config"`
// Name of the connection, unique within the organization.
Name *string `pulumi:"name"`
}
// The set of arguments for constructing a VaultProvider resource.
type VaultProviderArgs struct {
// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
Assignments pulumi.StringInput
// Provider credentials as a JSON object, including the `providerType` discriminator.
Config pulumi.StringInput
// Name of the connection, unique within the organization.
Name pulumi.StringPtrInput
}
func (VaultProviderArgs) ElementType() reflect.Type {
return reflect.TypeOf((*vaultProviderArgs)(nil)).Elem()
}
type VaultProviderInput interface {
pulumi.Input
ToVaultProviderOutput() VaultProviderOutput
ToVaultProviderOutputWithContext(ctx context.Context) VaultProviderOutput
}
func (*VaultProvider) ElementType() reflect.Type {
return reflect.TypeOf((**VaultProvider)(nil)).Elem()
}
func (i *VaultProvider) ToVaultProviderOutput() VaultProviderOutput {
return i.ToVaultProviderOutputWithContext(context.Background())
}
func (i *VaultProvider) ToVaultProviderOutputWithContext(ctx context.Context) VaultProviderOutput {
return pulumi.ToOutputWithContext(ctx, i).(VaultProviderOutput)
}
// VaultProviderArrayInput is an input type that accepts VaultProviderArray and VaultProviderArrayOutput values.
// You can construct a concrete instance of `VaultProviderArrayInput` via:
//
// VaultProviderArray{ VaultProviderArgs{...} }
type VaultProviderArrayInput interface {
pulumi.Input
ToVaultProviderArrayOutput() VaultProviderArrayOutput
ToVaultProviderArrayOutputWithContext(context.Context) VaultProviderArrayOutput
}
type VaultProviderArray []VaultProviderInput
func (VaultProviderArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*VaultProvider)(nil)).Elem()
}
func (i VaultProviderArray) ToVaultProviderArrayOutput() VaultProviderArrayOutput {
return i.ToVaultProviderArrayOutputWithContext(context.Background())
}
func (i VaultProviderArray) ToVaultProviderArrayOutputWithContext(ctx context.Context) VaultProviderArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(VaultProviderArrayOutput)
}
// VaultProviderMapInput is an input type that accepts VaultProviderMap and VaultProviderMapOutput values.
// You can construct a concrete instance of `VaultProviderMapInput` via:
//
// VaultProviderMap{ "key": VaultProviderArgs{...} }
type VaultProviderMapInput interface {
pulumi.Input
ToVaultProviderMapOutput() VaultProviderMapOutput
ToVaultProviderMapOutputWithContext(context.Context) VaultProviderMapOutput
}
type VaultProviderMap map[string]VaultProviderInput
func (VaultProviderMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*VaultProvider)(nil)).Elem()
}
func (i VaultProviderMap) ToVaultProviderMapOutput() VaultProviderMapOutput {
return i.ToVaultProviderMapOutputWithContext(context.Background())
}
func (i VaultProviderMap) ToVaultProviderMapOutputWithContext(ctx context.Context) VaultProviderMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(VaultProviderMapOutput)
}
type VaultProviderOutput struct{ *pulumi.OutputState }
func (VaultProviderOutput) ElementType() reflect.Type {
return reflect.TypeOf((**VaultProvider)(nil)).Elem()
}
func (o VaultProviderOutput) ToVaultProviderOutput() VaultProviderOutput {
return o
}
func (o VaultProviderOutput) ToVaultProviderOutputWithContext(ctx context.Context) VaultProviderOutput {
return o
}
// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
func (o VaultProviderOutput) Assignments() pulumi.StringOutput {
return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.Assignments }).(pulumi.StringOutput)
}
// Provider credentials as a JSON object, including the `providerType` discriminator.
func (o VaultProviderOutput) Config() pulumi.StringOutput {
return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.Config }).(pulumi.StringOutput)
}
// RFC 3339 timestamp of when the connection was created.
func (o VaultProviderOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Name of the connection, unique within the organization.
func (o VaultProviderOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// Organization that owns the connection.
func (o VaultProviderOutput) OrganizationId() pulumi.StringOutput {
return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput)
}
// Provider kind derived from `config`.
func (o VaultProviderOutput) ProviderType() pulumi.StringOutput {
return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.ProviderType }).(pulumi.StringOutput)
}
type VaultProviderArrayOutput struct{ *pulumi.OutputState }
func (VaultProviderArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*VaultProvider)(nil)).Elem()
}
func (o VaultProviderArrayOutput) ToVaultProviderArrayOutput() VaultProviderArrayOutput {
return o
}
func (o VaultProviderArrayOutput) ToVaultProviderArrayOutputWithContext(ctx context.Context) VaultProviderArrayOutput {
return o
}
func (o VaultProviderArrayOutput) Index(i pulumi.IntInput) VaultProviderOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VaultProvider {
return vs[0].([]*VaultProvider)[vs[1].(int)]
}).(VaultProviderOutput)
}
type VaultProviderMapOutput struct{ *pulumi.OutputState }
func (VaultProviderMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*VaultProvider)(nil)).Elem()
}
func (o VaultProviderMapOutput) ToVaultProviderMapOutput() VaultProviderMapOutput {
return o
}
func (o VaultProviderMapOutput) ToVaultProviderMapOutputWithContext(ctx context.Context) VaultProviderMapOutput {
return o
}
func (o VaultProviderMapOutput) MapIndex(k pulumi.StringInput) VaultProviderOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VaultProvider {
return vs[0].(map[string]*VaultProvider)[vs[1].(string)]
}).(VaultProviderOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*VaultProviderInput)(nil)).Elem(), &VaultProvider{})
pulumi.RegisterInputType(reflect.TypeOf((*VaultProviderArrayInput)(nil)).Elem(), VaultProviderArray{})
pulumi.RegisterInputType(reflect.TypeOf((*VaultProviderMapInput)(nil)).Elem(), VaultProviderMap{})
pulumi.RegisterOutputType(VaultProviderOutput{})
pulumi.RegisterOutputType(VaultProviderArrayOutput{})
pulumi.RegisterOutputType(VaultProviderMapOutput{})
}
+513
View File
@@ -0,0 +1,513 @@
// Code generated by pulumi-language-go DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package dokploy
import (
"context"
"reflect"
"errors"
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// A scheduled backup of a Docker volume to a configured `Destination`.
//
// This is the counterpart to a `Mount` with `type = "volume"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule.
//
// Set exactly one of the `*_id` attributes to say which service owns the volume.
type VolumeBackup struct {
pulumi.CustomResourceState
// Docker service name that owns the volume. Derived by Dokploy when omitted.
AppName pulumi.StringOutput `pulumi:"appName"`
// Application that owns the volume.
ApplicationId pulumi.StringPtrOutput `pulumi:"applicationId"`
// Compose stack that owns the volume.
ComposeId pulumi.StringPtrOutput `pulumi:"composeId"`
// RFC 3339 timestamp of when the backup job was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Standard five-field cron expression, for example `0 4 * * *`.
CronExpression pulumi.StringOutput `pulumi:"cronExpression"`
// Backup destination (S3-compatible bucket) to upload to.
DestinationId pulumi.StringOutput `pulumi:"destinationId"`
// Whether the backup schedule is active.
Enabled pulumi.BoolOutput `pulumi:"enabled"`
// Number of backups to retain. Older ones are pruned.
KeepLatestCount pulumi.IntOutput `pulumi:"keepLatestCount"`
// libSQL instance that owns the volume.
LibsqlId pulumi.StringPtrOutput `pulumi:"libsqlId"`
// MariaDB instance that owns the volume.
MariadbId pulumi.StringPtrOutput `pulumi:"mariadbId"`
// MongoDB instance that owns the volume.
MongoId pulumi.StringPtrOutput `pulumi:"mongoId"`
// MySQL instance that owns the volume.
MysqlId pulumi.StringPtrOutput `pulumi:"mysqlId"`
// Display name of the backup job.
Name pulumi.StringOutput `pulumi:"name"`
// PostgreSQL instance that owns the volume.
PostgresId pulumi.StringPtrOutput `pulumi:"postgresId"`
// Path prefix inside the destination bucket, for example `backups/shop/`.
Prefix pulumi.StringOutput `pulumi:"prefix"`
// Redis instance that owns the volume.
RedisId pulumi.StringPtrOutput `pulumi:"redisId"`
// Service inside a Compose stack that owns the volume.
ServiceName pulumi.StringPtrOutput `pulumi:"serviceName"`
// The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
ServiceType pulumi.StringOutput `pulumi:"serviceType"`
// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
TurnOff pulumi.BoolOutput `pulumi:"turnOff"`
// Name of the Docker volume to back up.
VolumeName pulumi.StringOutput `pulumi:"volumeName"`
}
// NewVolumeBackup registers a new resource with the given unique name, arguments, and options.
func NewVolumeBackup(ctx *pulumi.Context,
name string, args *VolumeBackupArgs, opts ...pulumi.ResourceOption) (*VolumeBackup, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.CronExpression == nil {
return nil, errors.New("invalid value for required argument 'CronExpression'")
}
if args.DestinationId == nil {
return nil, errors.New("invalid value for required argument 'DestinationId'")
}
if args.Prefix == nil {
return nil, errors.New("invalid value for required argument 'Prefix'")
}
if args.VolumeName == nil {
return nil, errors.New("invalid value for required argument 'VolumeName'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource VolumeBackup
err := ctx.RegisterResource("dokploy:index/volumeBackup:VolumeBackup", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetVolumeBackup gets an existing VolumeBackup resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetVolumeBackup(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *VolumeBackupState, opts ...pulumi.ResourceOption) (*VolumeBackup, error) {
var resource VolumeBackup
err := ctx.ReadResource("dokploy:index/volumeBackup:VolumeBackup", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering VolumeBackup resources.
type volumeBackupState struct {
// Docker service name that owns the volume. Derived by Dokploy when omitted.
AppName *string `pulumi:"appName"`
// Application that owns the volume.
ApplicationId *string `pulumi:"applicationId"`
// Compose stack that owns the volume.
ComposeId *string `pulumi:"composeId"`
// RFC 3339 timestamp of when the backup job was created.
CreatedAt *string `pulumi:"createdAt"`
// Standard five-field cron expression, for example `0 4 * * *`.
CronExpression *string `pulumi:"cronExpression"`
// Backup destination (S3-compatible bucket) to upload to.
DestinationId *string `pulumi:"destinationId"`
// Whether the backup schedule is active.
Enabled *bool `pulumi:"enabled"`
// Number of backups to retain. Older ones are pruned.
KeepLatestCount *int `pulumi:"keepLatestCount"`
// libSQL instance that owns the volume.
LibsqlId *string `pulumi:"libsqlId"`
// MariaDB instance that owns the volume.
MariadbId *string `pulumi:"mariadbId"`
// MongoDB instance that owns the volume.
MongoId *string `pulumi:"mongoId"`
// MySQL instance that owns the volume.
MysqlId *string `pulumi:"mysqlId"`
// Display name of the backup job.
Name *string `pulumi:"name"`
// PostgreSQL instance that owns the volume.
PostgresId *string `pulumi:"postgresId"`
// Path prefix inside the destination bucket, for example `backups/shop/`.
Prefix *string `pulumi:"prefix"`
// Redis instance that owns the volume.
RedisId *string `pulumi:"redisId"`
// Service inside a Compose stack that owns the volume.
ServiceName *string `pulumi:"serviceName"`
// The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
ServiceType *string `pulumi:"serviceType"`
// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
TurnOff *bool `pulumi:"turnOff"`
// Name of the Docker volume to back up.
VolumeName *string `pulumi:"volumeName"`
}
type VolumeBackupState struct {
// Docker service name that owns the volume. Derived by Dokploy when omitted.
AppName pulumi.StringPtrInput
// Application that owns the volume.
ApplicationId pulumi.StringPtrInput
// Compose stack that owns the volume.
ComposeId pulumi.StringPtrInput
// RFC 3339 timestamp of when the backup job was created.
CreatedAt pulumi.StringPtrInput
// Standard five-field cron expression, for example `0 4 * * *`.
CronExpression pulumi.StringPtrInput
// Backup destination (S3-compatible bucket) to upload to.
DestinationId pulumi.StringPtrInput
// Whether the backup schedule is active.
Enabled pulumi.BoolPtrInput
// Number of backups to retain. Older ones are pruned.
KeepLatestCount pulumi.IntPtrInput
// libSQL instance that owns the volume.
LibsqlId pulumi.StringPtrInput
// MariaDB instance that owns the volume.
MariadbId pulumi.StringPtrInput
// MongoDB instance that owns the volume.
MongoId pulumi.StringPtrInput
// MySQL instance that owns the volume.
MysqlId pulumi.StringPtrInput
// Display name of the backup job.
Name pulumi.StringPtrInput
// PostgreSQL instance that owns the volume.
PostgresId pulumi.StringPtrInput
// Path prefix inside the destination bucket, for example `backups/shop/`.
Prefix pulumi.StringPtrInput
// Redis instance that owns the volume.
RedisId pulumi.StringPtrInput
// Service inside a Compose stack that owns the volume.
ServiceName pulumi.StringPtrInput
// The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
ServiceType pulumi.StringPtrInput
// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
TurnOff pulumi.BoolPtrInput
// Name of the Docker volume to back up.
VolumeName pulumi.StringPtrInput
}
func (VolumeBackupState) ElementType() reflect.Type {
return reflect.TypeOf((*volumeBackupState)(nil)).Elem()
}
type volumeBackupArgs struct {
// Docker service name that owns the volume. Derived by Dokploy when omitted.
AppName *string `pulumi:"appName"`
// Application that owns the volume.
ApplicationId *string `pulumi:"applicationId"`
// Compose stack that owns the volume.
ComposeId *string `pulumi:"composeId"`
// Standard five-field cron expression, for example `0 4 * * *`.
CronExpression string `pulumi:"cronExpression"`
// Backup destination (S3-compatible bucket) to upload to.
DestinationId string `pulumi:"destinationId"`
// Whether the backup schedule is active.
Enabled *bool `pulumi:"enabled"`
// Number of backups to retain. Older ones are pruned.
KeepLatestCount *int `pulumi:"keepLatestCount"`
// libSQL instance that owns the volume.
LibsqlId *string `pulumi:"libsqlId"`
// MariaDB instance that owns the volume.
MariadbId *string `pulumi:"mariadbId"`
// MongoDB instance that owns the volume.
MongoId *string `pulumi:"mongoId"`
// MySQL instance that owns the volume.
MysqlId *string `pulumi:"mysqlId"`
// Display name of the backup job.
Name *string `pulumi:"name"`
// PostgreSQL instance that owns the volume.
PostgresId *string `pulumi:"postgresId"`
// Path prefix inside the destination bucket, for example `backups/shop/`.
Prefix string `pulumi:"prefix"`
// Redis instance that owns the volume.
RedisId *string `pulumi:"redisId"`
// Service inside a Compose stack that owns the volume.
ServiceName *string `pulumi:"serviceName"`
// The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
ServiceType *string `pulumi:"serviceType"`
// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
TurnOff *bool `pulumi:"turnOff"`
// Name of the Docker volume to back up.
VolumeName string `pulumi:"volumeName"`
}
// The set of arguments for constructing a VolumeBackup resource.
type VolumeBackupArgs struct {
// Docker service name that owns the volume. Derived by Dokploy when omitted.
AppName pulumi.StringPtrInput
// Application that owns the volume.
ApplicationId pulumi.StringPtrInput
// Compose stack that owns the volume.
ComposeId pulumi.StringPtrInput
// Standard five-field cron expression, for example `0 4 * * *`.
CronExpression pulumi.StringInput
// Backup destination (S3-compatible bucket) to upload to.
DestinationId pulumi.StringInput
// Whether the backup schedule is active.
Enabled pulumi.BoolPtrInput
// Number of backups to retain. Older ones are pruned.
KeepLatestCount pulumi.IntPtrInput
// libSQL instance that owns the volume.
LibsqlId pulumi.StringPtrInput
// MariaDB instance that owns the volume.
MariadbId pulumi.StringPtrInput
// MongoDB instance that owns the volume.
MongoId pulumi.StringPtrInput
// MySQL instance that owns the volume.
MysqlId pulumi.StringPtrInput
// Display name of the backup job.
Name pulumi.StringPtrInput
// PostgreSQL instance that owns the volume.
PostgresId pulumi.StringPtrInput
// Path prefix inside the destination bucket, for example `backups/shop/`.
Prefix pulumi.StringInput
// Redis instance that owns the volume.
RedisId pulumi.StringPtrInput
// Service inside a Compose stack that owns the volume.
ServiceName pulumi.StringPtrInput
// The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
ServiceType pulumi.StringPtrInput
// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
TurnOff pulumi.BoolPtrInput
// Name of the Docker volume to back up.
VolumeName pulumi.StringInput
}
func (VolumeBackupArgs) ElementType() reflect.Type {
return reflect.TypeOf((*volumeBackupArgs)(nil)).Elem()
}
type VolumeBackupInput interface {
pulumi.Input
ToVolumeBackupOutput() VolumeBackupOutput
ToVolumeBackupOutputWithContext(ctx context.Context) VolumeBackupOutput
}
func (*VolumeBackup) ElementType() reflect.Type {
return reflect.TypeOf((**VolumeBackup)(nil)).Elem()
}
func (i *VolumeBackup) ToVolumeBackupOutput() VolumeBackupOutput {
return i.ToVolumeBackupOutputWithContext(context.Background())
}
func (i *VolumeBackup) ToVolumeBackupOutputWithContext(ctx context.Context) VolumeBackupOutput {
return pulumi.ToOutputWithContext(ctx, i).(VolumeBackupOutput)
}
// VolumeBackupArrayInput is an input type that accepts VolumeBackupArray and VolumeBackupArrayOutput values.
// You can construct a concrete instance of `VolumeBackupArrayInput` via:
//
// VolumeBackupArray{ VolumeBackupArgs{...} }
type VolumeBackupArrayInput interface {
pulumi.Input
ToVolumeBackupArrayOutput() VolumeBackupArrayOutput
ToVolumeBackupArrayOutputWithContext(context.Context) VolumeBackupArrayOutput
}
type VolumeBackupArray []VolumeBackupInput
func (VolumeBackupArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*VolumeBackup)(nil)).Elem()
}
func (i VolumeBackupArray) ToVolumeBackupArrayOutput() VolumeBackupArrayOutput {
return i.ToVolumeBackupArrayOutputWithContext(context.Background())
}
func (i VolumeBackupArray) ToVolumeBackupArrayOutputWithContext(ctx context.Context) VolumeBackupArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(VolumeBackupArrayOutput)
}
// VolumeBackupMapInput is an input type that accepts VolumeBackupMap and VolumeBackupMapOutput values.
// You can construct a concrete instance of `VolumeBackupMapInput` via:
//
// VolumeBackupMap{ "key": VolumeBackupArgs{...} }
type VolumeBackupMapInput interface {
pulumi.Input
ToVolumeBackupMapOutput() VolumeBackupMapOutput
ToVolumeBackupMapOutputWithContext(context.Context) VolumeBackupMapOutput
}
type VolumeBackupMap map[string]VolumeBackupInput
func (VolumeBackupMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*VolumeBackup)(nil)).Elem()
}
func (i VolumeBackupMap) ToVolumeBackupMapOutput() VolumeBackupMapOutput {
return i.ToVolumeBackupMapOutputWithContext(context.Background())
}
func (i VolumeBackupMap) ToVolumeBackupMapOutputWithContext(ctx context.Context) VolumeBackupMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(VolumeBackupMapOutput)
}
type VolumeBackupOutput struct{ *pulumi.OutputState }
func (VolumeBackupOutput) ElementType() reflect.Type {
return reflect.TypeOf((**VolumeBackup)(nil)).Elem()
}
func (o VolumeBackupOutput) ToVolumeBackupOutput() VolumeBackupOutput {
return o
}
func (o VolumeBackupOutput) ToVolumeBackupOutputWithContext(ctx context.Context) VolumeBackupOutput {
return o
}
// Docker service name that owns the volume. Derived by Dokploy when omitted.
func (o VolumeBackupOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Application that owns the volume.
func (o VolumeBackupOutput) ApplicationId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.ApplicationId }).(pulumi.StringPtrOutput)
}
// Compose stack that owns the volume.
func (o VolumeBackupOutput) ComposeId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.ComposeId }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the backup job was created.
func (o VolumeBackupOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Standard five-field cron expression, for example `0 4 * * *`.
func (o VolumeBackupOutput) CronExpression() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.CronExpression }).(pulumi.StringOutput)
}
// Backup destination (S3-compatible bucket) to upload to.
func (o VolumeBackupOutput) DestinationId() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.DestinationId }).(pulumi.StringOutput)
}
// Whether the backup schedule is active.
func (o VolumeBackupOutput) Enabled() pulumi.BoolOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput)
}
// Number of backups to retain. Older ones are pruned.
func (o VolumeBackupOutput) KeepLatestCount() pulumi.IntOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.IntOutput { return v.KeepLatestCount }).(pulumi.IntOutput)
}
// libSQL instance that owns the volume.
func (o VolumeBackupOutput) LibsqlId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.LibsqlId }).(pulumi.StringPtrOutput)
}
// MariaDB instance that owns the volume.
func (o VolumeBackupOutput) MariadbId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.MariadbId }).(pulumi.StringPtrOutput)
}
// MongoDB instance that owns the volume.
func (o VolumeBackupOutput) MongoId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.MongoId }).(pulumi.StringPtrOutput)
}
// MySQL instance that owns the volume.
func (o VolumeBackupOutput) MysqlId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.MysqlId }).(pulumi.StringPtrOutput)
}
// Display name of the backup job.
func (o VolumeBackupOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// PostgreSQL instance that owns the volume.
func (o VolumeBackupOutput) PostgresId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.PostgresId }).(pulumi.StringPtrOutput)
}
// Path prefix inside the destination bucket, for example `backups/shop/`.
func (o VolumeBackupOutput) Prefix() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.Prefix }).(pulumi.StringOutput)
}
// Redis instance that owns the volume.
func (o VolumeBackupOutput) RedisId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.RedisId }).(pulumi.StringPtrOutput)
}
// Service inside a Compose stack that owns the volume.
func (o VolumeBackupOutput) ServiceName() pulumi.StringPtrOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.ServiceName }).(pulumi.StringPtrOutput)
}
// The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
func (o VolumeBackupOutput) ServiceType() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.ServiceType }).(pulumi.StringOutput)
}
// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
func (o VolumeBackupOutput) TurnOff() pulumi.BoolOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.BoolOutput { return v.TurnOff }).(pulumi.BoolOutput)
}
// Name of the Docker volume to back up.
func (o VolumeBackupOutput) VolumeName() pulumi.StringOutput {
return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.VolumeName }).(pulumi.StringOutput)
}
type VolumeBackupArrayOutput struct{ *pulumi.OutputState }
func (VolumeBackupArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*VolumeBackup)(nil)).Elem()
}
func (o VolumeBackupArrayOutput) ToVolumeBackupArrayOutput() VolumeBackupArrayOutput {
return o
}
func (o VolumeBackupArrayOutput) ToVolumeBackupArrayOutputWithContext(ctx context.Context) VolumeBackupArrayOutput {
return o
}
func (o VolumeBackupArrayOutput) Index(i pulumi.IntInput) VolumeBackupOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VolumeBackup {
return vs[0].([]*VolumeBackup)[vs[1].(int)]
}).(VolumeBackupOutput)
}
type VolumeBackupMapOutput struct{ *pulumi.OutputState }
func (VolumeBackupMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*VolumeBackup)(nil)).Elem()
}
func (o VolumeBackupMapOutput) ToVolumeBackupMapOutput() VolumeBackupMapOutput {
return o
}
func (o VolumeBackupMapOutput) ToVolumeBackupMapOutputWithContext(ctx context.Context) VolumeBackupMapOutput {
return o
}
func (o VolumeBackupMapOutput) MapIndex(k pulumi.StringInput) VolumeBackupOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VolumeBackup {
return vs[0].(map[string]*VolumeBackup)[vs[1].(string)]
}).(VolumeBackupOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*VolumeBackupInput)(nil)).Elem(), &VolumeBackup{})
pulumi.RegisterInputType(reflect.TypeOf((*VolumeBackupArrayInput)(nil)).Elem(), VolumeBackupArray{})
pulumi.RegisterInputType(reflect.TypeOf((*VolumeBackupMapInput)(nil)).Elem(), VolumeBackupMap{})
pulumi.RegisterOutputType(VolumeBackupOutput{})
pulumi.RegisterOutputType(VolumeBackupArrayOutput{})
pulumi.RegisterOutputType(VolumeBackupMapOutput{})
}