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
+224 -189
View File
File diff suppressed because it is too large Load Diff
+14 -9
View File
@@ -4,6 +4,11 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Certificate extends pulumi.CustomResource {
/**
* Get an existing Certificate resource's state with the given name, ID, and optional extra
@@ -105,27 +110,27 @@ export interface CertificateState {
/**
* Whether Dokploy should renew this certificate automatically.
*/
autoRenew?: pulumi.Input<boolean>;
autoRenew?: pulumi.Input<boolean | undefined>;
/**
* PEM-encoded certificate chain.
*/
certificateData?: pulumi.Input<string>;
certificateData?: pulumi.Input<string | undefined>;
/**
* Path where Dokploy writes the certificate on disk.
*/
certificatePath?: pulumi.Input<string>;
certificatePath?: pulumi.Input<string | undefined>;
/**
* Display name of the certificate.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* PEM-encoded private key.
*/
privateKey?: pulumi.Input<string>;
privateKey?: pulumi.Input<string | undefined>;
/**
* Server this certificate is installed on.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
}
/**
@@ -135,7 +140,7 @@ export interface CertificateArgs {
/**
* Whether Dokploy should renew this certificate automatically.
*/
autoRenew?: pulumi.Input<boolean>;
autoRenew?: pulumi.Input<boolean | undefined>;
/**
* PEM-encoded certificate chain.
*/
@@ -143,7 +148,7 @@ export interface CertificateArgs {
/**
* Display name of the certificate.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* PEM-encoded private key.
*/
@@ -151,5 +156,5 @@ export interface CertificateArgs {
/**
* Server this certificate is installed on.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
}
+134 -85
View File
@@ -4,6 +4,13 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Compose extends pulumi.CustomResource {
/**
* Get an existing Compose resource's state with the given name, ID, and optional extra
@@ -84,6 +91,10 @@ export class Compose extends pulumi.CustomResource {
* Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
*/
declare public readonly composeType: pulumi.Output<string>;
/**
* Write the environment variables to a `.env` file next to the Compose file.
*/
declare public readonly createEnvFile: pulumi.Output<boolean>;
/**
* RFC 3339 timestamp of when the stack was created.
*/
@@ -164,6 +175,10 @@ export class Compose extends pulumi.CustomResource {
* GitLab repository name.
*/
declare public readonly gitlabRepository: pulumi.Output<string | undefined>;
/**
* Icon shown next to the stack in the Dokploy UI.
*/
declare public readonly icon: pulumi.Output<string | undefined>;
/**
* Run the stack on its own isolated Docker network.
*/
@@ -192,6 +207,10 @@ export class Compose extends pulumi.CustomResource {
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
*/
declare public readonly serviceNetworks: pulumi.Output<string | undefined>;
/**
* Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
*/
@@ -235,6 +254,7 @@ export class Compose extends pulumi.CustomResource {
resourceInputs["composePath"] = state?.composePath;
resourceInputs["composeStatus"] = state?.composeStatus;
resourceInputs["composeType"] = state?.composeType;
resourceInputs["createEnvFile"] = state?.createEnvFile;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["customGitBranch"] = state?.customGitBranch;
resourceInputs["customGitSshKeyId"] = state?.customGitSshKeyId;
@@ -255,6 +275,7 @@ export class Compose extends pulumi.CustomResource {
resourceInputs["gitlabPathNamespace"] = state?.gitlabPathNamespace;
resourceInputs["gitlabProjectId"] = state?.gitlabProjectId;
resourceInputs["gitlabRepository"] = state?.gitlabRepository;
resourceInputs["icon"] = state?.icon;
resourceInputs["isolatedDeployment"] = state?.isolatedDeployment;
resourceInputs["isolatedDeploymentsVolume"] = state?.isolatedDeploymentsVolume;
resourceInputs["name"] = state?.name;
@@ -262,6 +283,7 @@ export class Compose extends pulumi.CustomResource {
resourceInputs["randomize"] = state?.randomize;
resourceInputs["repository"] = state?.repository;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["serviceNetworks"] = state?.serviceNetworks;
resourceInputs["sourceType"] = state?.sourceType;
resourceInputs["suffix"] = state?.suffix;
resourceInputs["triggerType"] = state?.triggerType;
@@ -283,6 +305,7 @@ export class Compose extends pulumi.CustomResource {
resourceInputs["composeFile"] = args?.composeFile;
resourceInputs["composePath"] = args?.composePath;
resourceInputs["composeType"] = args?.composeType;
resourceInputs["createEnvFile"] = args?.createEnvFile;
resourceInputs["customGitBranch"] = args?.customGitBranch;
resourceInputs["customGitSshKeyId"] = args?.customGitSshKeyId;
resourceInputs["customGitUrl"] = args?.customGitUrl;
@@ -302,6 +325,7 @@ export class Compose extends pulumi.CustomResource {
resourceInputs["gitlabPathNamespace"] = args?.gitlabPathNamespace;
resourceInputs["gitlabProjectId"] = args?.gitlabProjectId;
resourceInputs["gitlabRepository"] = args?.gitlabRepository;
resourceInputs["icon"] = args?.icon;
resourceInputs["isolatedDeployment"] = args?.isolatedDeployment;
resourceInputs["isolatedDeploymentsVolume"] = args?.isolatedDeploymentsVolume;
resourceInputs["name"] = args?.name;
@@ -309,6 +333,7 @@ export class Compose extends pulumi.CustomResource {
resourceInputs["randomize"] = args?.randomize;
resourceInputs["repository"] = args?.repository;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["serviceNetworks"] = args?.serviceNetworks;
resourceInputs["sourceType"] = args?.sourceType;
resourceInputs["suffix"] = args?.suffix;
resourceInputs["triggerType"] = args?.triggerType;
@@ -328,179 +353,191 @@ export interface ComposeState {
/**
* Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Deploy automatically when the configured trigger fires.
*/
autoDeploy?: pulumi.Input<boolean>;
autoDeploy?: pulumi.Input<boolean | undefined>;
/**
* Bitbucket branch to deploy.
*/
bitbucketBranch?: pulumi.Input<string>;
bitbucketBranch?: pulumi.Input<string | undefined>;
/**
* ID of the configured Bitbucket provider connection.
*/
bitbucketId?: pulumi.Input<string>;
bitbucketId?: pulumi.Input<string | undefined>;
/**
* Bitbucket repository owner.
*/
bitbucketOwner?: pulumi.Input<string>;
bitbucketOwner?: pulumi.Input<string | undefined>;
/**
* Bitbucket repository name.
*/
bitbucketRepository?: pulumi.Input<string>;
bitbucketRepository?: pulumi.Input<string | undefined>;
/**
* Bitbucket repository slug.
*/
bitbucketRepositorySlug?: pulumi.Input<string>;
bitbucketRepositorySlug?: pulumi.Input<string | undefined>;
/**
* GitHub branch to deploy.
*/
branch?: pulumi.Input<string>;
branch?: pulumi.Input<string | undefined>;
/**
* Custom `docker compose` command to run.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Inline Compose file contents. Used when `sourceType` is `raw`.
*/
composeFile?: pulumi.Input<string>;
composeFile?: pulumi.Input<string | undefined>;
/**
* Path to the Compose file within the repository.
*/
composePath?: pulumi.Input<string>;
composePath?: pulumi.Input<string | undefined>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
composeStatus?: pulumi.Input<string>;
composeStatus?: pulumi.Input<string | undefined>;
/**
* Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
*/
composeType?: pulumi.Input<string>;
composeType?: pulumi.Input<string | undefined>;
/**
* Write the environment variables to a `.env` file next to the Compose file.
*/
createEnvFile?: pulumi.Input<boolean | undefined>;
/**
* RFC 3339 timestamp of when the stack was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Branch to deploy for a custom Git remote.
*/
customGitBranch?: pulumi.Input<string>;
customGitBranch?: pulumi.Input<string | undefined>;
/**
* SSH key used to clone a private custom Git remote.
*/
customGitSshKeyId?: pulumi.Input<string>;
customGitSshKeyId?: pulumi.Input<string | undefined>;
/**
* Git remote URL, when `sourceType` is `git`.
*/
customGitUrl?: pulumi.Input<string>;
customGitUrl?: pulumi.Input<string | undefined>;
/**
* Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
*/
deleteVolumes?: pulumi.Input<boolean>;
deleteVolumes?: pulumi.Input<boolean | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Clone Git submodules when checking out the repository.
*/
enableSubmodules?: pulumi.Input<boolean>;
enableSubmodules?: pulumi.Input<boolean | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this stack belongs to.
*/
environmentId?: pulumi.Input<string>;
environmentId?: pulumi.Input<string | undefined>;
/**
* Gitea branch to deploy.
*/
giteaBranch?: pulumi.Input<string>;
giteaBranch?: pulumi.Input<string | undefined>;
/**
* ID of the configured Gitea provider connection.
*/
giteaId?: pulumi.Input<string>;
giteaId?: pulumi.Input<string | undefined>;
/**
* Gitea repository owner.
*/
giteaOwner?: pulumi.Input<string>;
giteaOwner?: pulumi.Input<string | undefined>;
/**
* Gitea repository name.
*/
giteaRepository?: pulumi.Input<string>;
giteaRepository?: pulumi.Input<string | undefined>;
/**
* ID of the configured GitHub provider connection.
*/
githubId?: pulumi.Input<string>;
githubId?: pulumi.Input<string | undefined>;
/**
* GitLab branch to deploy.
*/
gitlabBranch?: pulumi.Input<string>;
gitlabBranch?: pulumi.Input<string | undefined>;
/**
* ID of the configured GitLab provider connection.
*/
gitlabId?: pulumi.Input<string>;
gitlabId?: pulumi.Input<string | undefined>;
/**
* GitLab repository owner.
*/
gitlabOwner?: pulumi.Input<string>;
gitlabOwner?: pulumi.Input<string | undefined>;
/**
* Full GitLab namespace path.
*/
gitlabPathNamespace?: pulumi.Input<string>;
gitlabPathNamespace?: pulumi.Input<string | undefined>;
/**
* Numeric GitLab project ID.
*/
gitlabProjectId?: pulumi.Input<number>;
gitlabProjectId?: pulumi.Input<number | undefined>;
/**
* GitLab repository name.
*/
gitlabRepository?: pulumi.Input<string>;
gitlabRepository?: pulumi.Input<string | undefined>;
/**
* Icon shown next to the stack in the Dokploy UI.
*/
icon?: pulumi.Input<string | undefined>;
/**
* Run the stack on its own isolated Docker network.
*/
isolatedDeployment?: pulumi.Input<boolean>;
isolatedDeployment?: pulumi.Input<boolean | undefined>;
/**
* Prefix volume names for isolated deployments. Retained for backwards compatibility.
*/
isolatedDeploymentsVolume?: pulumi.Input<boolean>;
isolatedDeploymentsVolume?: pulumi.Input<boolean | undefined>;
/**
* Display name of the stack.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* GitHub repository owner.
*/
owner?: pulumi.Input<string>;
owner?: pulumi.Input<string | undefined>;
/**
* Append a random suffix to service and volume names.
*/
randomize?: pulumi.Input<boolean>;
randomize?: pulumi.Input<boolean | undefined>;
/**
* GitHub repository name.
*/
repository?: pulumi.Input<string>;
repository?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
*/
serviceNetworks?: pulumi.Input<string | undefined>;
/**
* Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
*/
sourceType?: pulumi.Input<string>;
sourceType?: pulumi.Input<string | undefined>;
/**
* Suffix appended to generated resource names.
*/
suffix?: pulumi.Input<string>;
suffix?: pulumi.Input<string | undefined>;
/**
* What triggers an automatic deployment. Valid values: `push`, `tag`.
*/
triggerType?: pulumi.Input<string>;
triggerType?: pulumi.Input<string | undefined>;
/**
* Glob patterns that limit which changed paths trigger an automatic deployment.
*/
watchPaths?: pulumi.Input<pulumi.Input<string>[]>;
watchPaths?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
/**
@@ -510,79 +547,83 @@ export interface ComposeArgs {
/**
* Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Deploy automatically when the configured trigger fires.
*/
autoDeploy?: pulumi.Input<boolean>;
autoDeploy?: pulumi.Input<boolean | undefined>;
/**
* Bitbucket branch to deploy.
*/
bitbucketBranch?: pulumi.Input<string>;
bitbucketBranch?: pulumi.Input<string | undefined>;
/**
* ID of the configured Bitbucket provider connection.
*/
bitbucketId?: pulumi.Input<string>;
bitbucketId?: pulumi.Input<string | undefined>;
/**
* Bitbucket repository owner.
*/
bitbucketOwner?: pulumi.Input<string>;
bitbucketOwner?: pulumi.Input<string | undefined>;
/**
* Bitbucket repository name.
*/
bitbucketRepository?: pulumi.Input<string>;
bitbucketRepository?: pulumi.Input<string | undefined>;
/**
* Bitbucket repository slug.
*/
bitbucketRepositorySlug?: pulumi.Input<string>;
bitbucketRepositorySlug?: pulumi.Input<string | undefined>;
/**
* GitHub branch to deploy.
*/
branch?: pulumi.Input<string>;
branch?: pulumi.Input<string | undefined>;
/**
* Custom `docker compose` command to run.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Inline Compose file contents. Used when `sourceType` is `raw`.
*/
composeFile?: pulumi.Input<string>;
composeFile?: pulumi.Input<string | undefined>;
/**
* Path to the Compose file within the repository.
*/
composePath?: pulumi.Input<string>;
composePath?: pulumi.Input<string | undefined>;
/**
* Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
*/
composeType?: pulumi.Input<string>;
composeType?: pulumi.Input<string | undefined>;
/**
* Write the environment variables to a `.env` file next to the Compose file.
*/
createEnvFile?: pulumi.Input<boolean | undefined>;
/**
* Branch to deploy for a custom Git remote.
*/
customGitBranch?: pulumi.Input<string>;
customGitBranch?: pulumi.Input<string | undefined>;
/**
* SSH key used to clone a private custom Git remote.
*/
customGitSshKeyId?: pulumi.Input<string>;
customGitSshKeyId?: pulumi.Input<string | undefined>;
/**
* Git remote URL, when `sourceType` is `git`.
*/
customGitUrl?: pulumi.Input<string>;
customGitUrl?: pulumi.Input<string | undefined>;
/**
* Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
*/
deleteVolumes?: pulumi.Input<boolean>;
deleteVolumes?: pulumi.Input<boolean | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Clone Git submodules when checking out the repository.
*/
enableSubmodules?: pulumi.Input<boolean>;
enableSubmodules?: pulumi.Input<boolean | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this stack belongs to.
*/
@@ -590,89 +631,97 @@ export interface ComposeArgs {
/**
* Gitea branch to deploy.
*/
giteaBranch?: pulumi.Input<string>;
giteaBranch?: pulumi.Input<string | undefined>;
/**
* ID of the configured Gitea provider connection.
*/
giteaId?: pulumi.Input<string>;
giteaId?: pulumi.Input<string | undefined>;
/**
* Gitea repository owner.
*/
giteaOwner?: pulumi.Input<string>;
giteaOwner?: pulumi.Input<string | undefined>;
/**
* Gitea repository name.
*/
giteaRepository?: pulumi.Input<string>;
giteaRepository?: pulumi.Input<string | undefined>;
/**
* ID of the configured GitHub provider connection.
*/
githubId?: pulumi.Input<string>;
githubId?: pulumi.Input<string | undefined>;
/**
* GitLab branch to deploy.
*/
gitlabBranch?: pulumi.Input<string>;
gitlabBranch?: pulumi.Input<string | undefined>;
/**
* ID of the configured GitLab provider connection.
*/
gitlabId?: pulumi.Input<string>;
gitlabId?: pulumi.Input<string | undefined>;
/**
* GitLab repository owner.
*/
gitlabOwner?: pulumi.Input<string>;
gitlabOwner?: pulumi.Input<string | undefined>;
/**
* Full GitLab namespace path.
*/
gitlabPathNamespace?: pulumi.Input<string>;
gitlabPathNamespace?: pulumi.Input<string | undefined>;
/**
* Numeric GitLab project ID.
*/
gitlabProjectId?: pulumi.Input<number>;
gitlabProjectId?: pulumi.Input<number | undefined>;
/**
* GitLab repository name.
*/
gitlabRepository?: pulumi.Input<string>;
gitlabRepository?: pulumi.Input<string | undefined>;
/**
* Icon shown next to the stack in the Dokploy UI.
*/
icon?: pulumi.Input<string | undefined>;
/**
* Run the stack on its own isolated Docker network.
*/
isolatedDeployment?: pulumi.Input<boolean>;
isolatedDeployment?: pulumi.Input<boolean | undefined>;
/**
* Prefix volume names for isolated deployments. Retained for backwards compatibility.
*/
isolatedDeploymentsVolume?: pulumi.Input<boolean>;
isolatedDeploymentsVolume?: pulumi.Input<boolean | undefined>;
/**
* Display name of the stack.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* GitHub repository owner.
*/
owner?: pulumi.Input<string>;
owner?: pulumi.Input<string | undefined>;
/**
* Append a random suffix to service and volume names.
*/
randomize?: pulumi.Input<boolean>;
randomize?: pulumi.Input<boolean | undefined>;
/**
* GitHub repository name.
*/
repository?: pulumi.Input<string>;
repository?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.
*/
serviceNetworks?: pulumi.Input<string | undefined>;
/**
* Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
*/
sourceType?: pulumi.Input<string>;
sourceType?: pulumi.Input<string | undefined>;
/**
* Suffix appended to generated resource names.
*/
suffix?: pulumi.Input<string>;
suffix?: pulumi.Input<string | undefined>;
/**
* What triggers an automatic deployment. Valid values: `push`, `tag`.
*/
triggerType?: pulumi.Input<string>;
triggerType?: pulumi.Input<string | undefined>;
/**
* Glob patterns that limit which changed paths trigger an automatic deployment.
*/
watchPaths?: pulumi.Input<pulumi.Input<string>[]>;
watchPaths?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
+19 -14
View File
@@ -4,6 +4,11 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Destination extends pulumi.CustomResource {
/**
* Get an existing Destination resource's state with the given name, ID, and optional extra
@@ -138,43 +143,43 @@ export interface DestinationState {
/**
* S3 access key ID.
*/
accessKey?: pulumi.Input<string>;
accessKey?: pulumi.Input<string | undefined>;
/**
* Extra flags passed to the underlying `rclone` invocation.
*/
additionalFlags?: pulumi.Input<pulumi.Input<string>[]>;
additionalFlags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Bucket name.
*/
bucket?: pulumi.Input<string>;
bucket?: pulumi.Input<string | undefined>;
/**
* Timestamp of when the destination was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* S3 endpoint URL.
*/
endpoint?: pulumi.Input<string>;
endpoint?: pulumi.Input<string | undefined>;
/**
* Display name of the destination.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
*/
providerName?: pulumi.Input<string>;
providerName?: pulumi.Input<string | undefined>;
/**
* Bucket region, for example `us-east-1`.
*/
region?: pulumi.Input<string>;
region?: pulumi.Input<string | undefined>;
/**
* S3 secret access key.
*/
secretAccessKey?: pulumi.Input<string>;
secretAccessKey?: pulumi.Input<string | undefined>;
/**
* Server this destination is scoped to.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
}
/**
@@ -188,7 +193,7 @@ export interface DestinationArgs {
/**
* Extra flags passed to the underlying `rclone` invocation.
*/
additionalFlags?: pulumi.Input<pulumi.Input<string>[]>;
additionalFlags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Bucket name.
*/
@@ -200,11 +205,11 @@ export interface DestinationArgs {
/**
* Display name of the destination.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
*/
providerName?: pulumi.Input<string>;
providerName?: pulumi.Input<string | undefined>;
/**
* Bucket region, for example `us-east-1`.
*/
@@ -216,5 +221,5 @@ export interface DestinationArgs {
/**
* Server this destination is scoped to.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
}
+135
View File
@@ -0,0 +1,135 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* A DNS provider connection Dokploy uses to create records for domains automatically.
*
* `config` is a JSON object whose shape depends on `providerType`:
*/
export class DnsProvider extends pulumi.CustomResource {
/**
* Get an existing DnsProvider resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DnsProviderState, opts?: pulumi.CustomResourceOptions): DnsProvider {
return new DnsProvider(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/dnsProvider:DnsProvider';
/**
* Returns true if the given object is an instance of DnsProvider. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is DnsProvider {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === DnsProvider.__pulumiType;
}
/**
* Provider credentials as a JSON object, including the `providerType` discriminator.
*/
declare public readonly config: pulumi.Output<string>;
/**
* RFC 3339 timestamp of when the connection was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
*/
declare public readonly name: pulumi.Output<string>;
/**
* Organization that owns the connection.
*/
declare public /*out*/ readonly organizationId: pulumi.Output<string>;
/**
* Provider kind derived from `config`: `cloudflare` or `route53`.
*/
declare public /*out*/ readonly providerType: pulumi.Output<string>;
/**
* Create a DnsProvider resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: DnsProviderArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: DnsProviderArgs | DnsProviderState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as DnsProviderState | undefined;
resourceInputs["config"] = state?.config;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["name"] = state?.name;
resourceInputs["organizationId"] = state?.organizationId;
resourceInputs["providerType"] = state?.providerType;
} else {
const args = argsOrState as DnsProviderArgs | undefined;
if (args?.config === undefined && !opts.urn) {
throw new Error("Missing required property 'config'");
}
resourceInputs["config"] = args?.config ? pulumi.secret(args.config) : undefined;
resourceInputs["name"] = args?.name;
resourceInputs["createdAt"] = undefined /*out*/;
resourceInputs["organizationId"] = undefined /*out*/;
resourceInputs["providerType"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["config"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(DnsProvider.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering DnsProvider resources.
*/
export interface DnsProviderState {
/**
* Provider credentials as a JSON object, including the `providerType` discriminator.
*/
config?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the connection was created.
*/
createdAt?: pulumi.Input<string | undefined>;
/**
* Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
*/
name?: pulumi.Input<string | undefined>;
/**
* Organization that owns the connection.
*/
organizationId?: pulumi.Input<string | undefined>;
/**
* Provider kind derived from `config`: `cloudflare` or `route53`.
*/
providerType?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a DnsProvider resource.
*/
export interface DnsProviderArgs {
/**
* Provider credentials as a JSON object, including the `providerType` discriminator.
*/
config: pulumi.Input<string>;
/**
* Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.
*/
name?: pulumi.Input<string | undefined>;
}
+51 -32
View File
@@ -4,6 +4,11 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Domain extends pulumi.CustomResource {
/**
* Get an existing Domain resource's state with the given name, ID, and optional extra
@@ -60,6 +65,10 @@ export class Domain extends pulumi.CustomResource {
* What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
*/
declare public readonly domainType: pulumi.Output<string>;
/**
* 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.
*/
declare public readonly enabled: pulumi.Output<boolean>;
/**
* Protect this domain with Dokploy's forward auth.
*/
@@ -121,6 +130,7 @@ export class Domain extends pulumi.CustomResource {
resourceInputs["customCertResolver"] = state?.customCertResolver;
resourceInputs["customEntrypoint"] = state?.customEntrypoint;
resourceInputs["domainType"] = state?.domainType;
resourceInputs["enabled"] = state?.enabled;
resourceInputs["forwardAuthEnabled"] = state?.forwardAuthEnabled;
resourceInputs["host"] = state?.host;
resourceInputs["https"] = state?.https;
@@ -142,6 +152,7 @@ export class Domain extends pulumi.CustomResource {
resourceInputs["customCertResolver"] = args?.customCertResolver;
resourceInputs["customEntrypoint"] = args?.customEntrypoint;
resourceInputs["domainType"] = args?.domainType;
resourceInputs["enabled"] = args?.enabled;
resourceInputs["forwardAuthEnabled"] = args?.forwardAuthEnabled;
resourceInputs["host"] = args?.host;
resourceInputs["https"] = args?.https;
@@ -166,71 +177,75 @@ export interface DomainState {
/**
* Application this domain routes to.
*/
applicationId?: pulumi.Input<string>;
applicationId?: pulumi.Input<string | undefined>;
/**
* How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
*/
certificateType?: pulumi.Input<string>;
certificateType?: pulumi.Input<string | undefined>;
/**
* Compose stack this domain routes to.
*/
composeId?: pulumi.Input<string>;
composeId?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the domain was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Traefik certificate resolver name, when `certificateType` is `custom`.
*/
customCertResolver?: pulumi.Input<string>;
customCertResolver?: pulumi.Input<string | undefined>;
/**
* Traefik entrypoint to bind, when not using the defaults.
*/
customEntrypoint?: pulumi.Input<string>;
customEntrypoint?: pulumi.Input<string | undefined>;
/**
* What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
*/
domainType?: pulumi.Input<string>;
domainType?: pulumi.Input<string | undefined>;
/**
* 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.Input<boolean | undefined>;
/**
* Protect this domain with Dokploy's forward auth.
*/
forwardAuthEnabled?: pulumi.Input<boolean>;
forwardAuthEnabled?: pulumi.Input<boolean | undefined>;
/**
* Fully-qualified hostname, for example `api.example.com`.
*/
host?: pulumi.Input<string>;
host?: pulumi.Input<string | undefined>;
/**
* Serve the domain over HTTPS and redirect HTTP traffic to it.
*/
https?: pulumi.Input<boolean>;
https?: pulumi.Input<boolean | undefined>;
/**
* Path the request is rewritten to before it reaches the container, defaults to `/`.
*/
internalPath?: pulumi.Input<string>;
internalPath?: pulumi.Input<string | undefined>;
/**
* Names of Traefik middlewares to apply.
*/
middlewares?: pulumi.Input<pulumi.Input<string>[]>;
middlewares?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Path prefix this domain routes, defaults to `/`.
*/
path?: pulumi.Input<string>;
path?: pulumi.Input<string | undefined>;
/**
* Container port that receives the traffic, defaults to `3000`.
*/
port?: pulumi.Input<number>;
port?: pulumi.Input<number | undefined>;
/**
* Preview deployment this domain routes to.
*/
previewDeploymentId?: pulumi.Input<string>;
previewDeploymentId?: pulumi.Input<string | undefined>;
/**
* Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
*/
serviceName?: pulumi.Input<string>;
serviceName?: pulumi.Input<string | undefined>;
/**
* Strip `path` from the request before forwarding it.
*/
stripPath?: pulumi.Input<boolean>;
stripPath?: pulumi.Input<boolean | undefined>;
}
/**
@@ -240,31 +255,35 @@ export interface DomainArgs {
/**
* Application this domain routes to.
*/
applicationId?: pulumi.Input<string>;
applicationId?: pulumi.Input<string | undefined>;
/**
* How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
*/
certificateType?: pulumi.Input<string>;
certificateType?: pulumi.Input<string | undefined>;
/**
* Compose stack this domain routes to.
*/
composeId?: pulumi.Input<string>;
composeId?: pulumi.Input<string | undefined>;
/**
* Traefik certificate resolver name, when `certificateType` is `custom`.
*/
customCertResolver?: pulumi.Input<string>;
customCertResolver?: pulumi.Input<string | undefined>;
/**
* Traefik entrypoint to bind, when not using the defaults.
*/
customEntrypoint?: pulumi.Input<string>;
customEntrypoint?: pulumi.Input<string | undefined>;
/**
* What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
*/
domainType?: pulumi.Input<string>;
domainType?: pulumi.Input<string | undefined>;
/**
* 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.Input<boolean | undefined>;
/**
* Protect this domain with Dokploy's forward auth.
*/
forwardAuthEnabled?: pulumi.Input<boolean>;
forwardAuthEnabled?: pulumi.Input<boolean | undefined>;
/**
* Fully-qualified hostname, for example `api.example.com`.
*/
@@ -272,33 +291,33 @@ export interface DomainArgs {
/**
* Serve the domain over HTTPS and redirect HTTP traffic to it.
*/
https?: pulumi.Input<boolean>;
https?: pulumi.Input<boolean | undefined>;
/**
* Path the request is rewritten to before it reaches the container, defaults to `/`.
*/
internalPath?: pulumi.Input<string>;
internalPath?: pulumi.Input<string | undefined>;
/**
* Names of Traefik middlewares to apply.
*/
middlewares?: pulumi.Input<pulumi.Input<string>[]>;
middlewares?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Path prefix this domain routes, defaults to `/`.
*/
path?: pulumi.Input<string>;
path?: pulumi.Input<string | undefined>;
/**
* Container port that receives the traffic, defaults to `3000`.
*/
port?: pulumi.Input<number>;
port?: pulumi.Input<number | undefined>;
/**
* Preview deployment this domain routes to.
*/
previewDeploymentId?: pulumi.Input<string>;
previewDeploymentId?: pulumi.Input<string | undefined>;
/**
* Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
*/
serviceName?: pulumi.Input<string>;
serviceName?: pulumi.Input<string | undefined>;
/**
* Strip `path` from the request before forwarding it.
*/
stripPath?: pulumi.Input<boolean>;
stripPath?: pulumi.Input<boolean | undefined>;
}
+14 -9
View File
@@ -4,6 +4,11 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Environment extends pulumi.CustomResource {
/**
* Get an existing Environment resource's state with the given name, ID, and optional extra
@@ -100,27 +105,27 @@ export interface EnvironmentState {
/**
* RFC 3339 timestamp of when the environment was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Whether this is the project's default environment.
*/
isDefault?: pulumi.Input<boolean>;
isDefault?: pulumi.Input<boolean | undefined>;
/**
* Environment name, for example `staging`.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* Project this environment belongs to.
*/
projectId?: pulumi.Input<string>;
projectId?: pulumi.Input<string | undefined>;
}
/**
@@ -130,15 +135,15 @@ export interface EnvironmentArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment name, for example `staging`.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* Project this environment belongs to.
*/
+39
View File
@@ -4,6 +4,9 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* Look up an existing application by ID.
*/
export function getApplication(args: GetApplicationArgs, opts?: pulumi.InvokeOptions): Promise<GetApplicationResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getApplication:getApplication", {
@@ -15,6 +18,9 @@ export function getApplication(args: GetApplicationArgs, opts?: pulumi.InvokeOpt
* A collection of arguments for invoking getApplication.
*/
export interface GetApplicationArgs {
/**
* Application identifier.
*/
id: string;
}
@@ -22,16 +28,46 @@ export interface GetApplicationArgs {
* A collection of values returned by getApplication.
*/
export interface GetApplicationResult {
/**
* Docker service name.
*/
readonly appName: string;
/**
* Current status.
*/
readonly applicationStatus: string;
/**
* Build strategy.
*/
readonly buildType: string;
/**
* Creation timestamp.
*/
readonly createdAt: string;
/**
* Application description.
*/
readonly description: string;
/**
* Owning environment.
*/
readonly environmentId: string;
/**
* Application identifier.
*/
readonly id: string;
/**
* Application name.
*/
readonly name: string;
/**
* Source of the code or image.
*/
readonly sourceType: string;
}
/**
* Look up an existing application by ID.
*/
export function getApplicationOutput(args: GetApplicationOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetApplicationResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getApplication:getApplication", {
@@ -43,5 +79,8 @@ export function getApplicationOutput(args: GetApplicationOutputArgs, opts?: pulu
* A collection of arguments for invoking getApplication.
*/
export interface GetApplicationOutputArgs {
/**
* Application identifier.
*/
id: pulumi.Input<string>;
}
+33
View File
@@ -4,6 +4,9 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* Look up an existing environment by ID.
*/
export function getEnvironment(args: GetEnvironmentArgs, opts?: pulumi.InvokeOptions): Promise<GetEnvironmentResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getEnvironment:getEnvironment", {
@@ -15,6 +18,9 @@ export function getEnvironment(args: GetEnvironmentArgs, opts?: pulumi.InvokeOpt
* A collection of arguments for invoking getEnvironment.
*/
export interface GetEnvironmentArgs {
/**
* Environment identifier.
*/
id: string;
}
@@ -22,14 +28,38 @@ export interface GetEnvironmentArgs {
* A collection of values returned by getEnvironment.
*/
export interface GetEnvironmentResult {
/**
* Creation timestamp.
*/
readonly createdAt: string;
/**
* Environment description.
*/
readonly description: string;
/**
* Environment-wide variables.
*/
readonly env: string;
/**
* Environment identifier.
*/
readonly id: string;
/**
* Whether this is the project's default environment.
*/
readonly isDefault: boolean;
/**
* Environment name.
*/
readonly name: string;
/**
* Owning project.
*/
readonly projectId: string;
}
/**
* Look up an existing environment by ID.
*/
export function getEnvironmentOutput(args: GetEnvironmentOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetEnvironmentResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getEnvironment:getEnvironment", {
@@ -41,5 +71,8 @@ export function getEnvironmentOutput(args: GetEnvironmentOutputArgs, opts?: pulu
* A collection of arguments for invoking getEnvironment.
*/
export interface GetEnvironmentOutputArgs {
/**
* Environment identifier.
*/
id: pulumi.Input<string>;
}
+36
View File
@@ -6,6 +6,9 @@ import * as inputs from "./types/input";
import * as outputs from "./types/output";
import * as utilities from "./utilities";
/**
* Look up an existing Dokploy project by ID, including its environments.
*/
export function getProject(args: GetProjectArgs, opts?: pulumi.InvokeOptions): Promise<GetProjectResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getProject:getProject", {
@@ -17,6 +20,9 @@ export function getProject(args: GetProjectArgs, opts?: pulumi.InvokeOptions): P
* A collection of arguments for invoking getProject.
*/
export interface GetProjectArgs {
/**
* Project identifier.
*/
id: string;
}
@@ -24,15 +30,42 @@ export interface GetProjectArgs {
* A collection of values returned by getProject.
*/
export interface GetProjectResult {
/**
* Creation timestamp.
*/
readonly createdAt: string;
/**
* ID of the project's default environment.
*/
readonly defaultEnvironmentId: string;
/**
* Project description.
*/
readonly description: string;
/**
* Project-wide environment variables.
*/
readonly env: string;
/**
* Every environment in the project.
*/
readonly environments: outputs.GetProjectEnvironment[];
/**
* Project identifier.
*/
readonly id: string;
/**
* Project name.
*/
readonly name: string;
/**
* Owning organization.
*/
readonly organizationId: string;
}
/**
* Look up an existing Dokploy project by ID, including its environments.
*/
export function getProjectOutput(args: GetProjectOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetProjectResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getProject:getProject", {
@@ -44,5 +77,8 @@ export function getProjectOutput(args: GetProjectOutputArgs, opts?: pulumi.Invok
* A collection of arguments for invoking getProject.
*/
export interface GetProjectOutputArgs {
/**
* Project identifier.
*/
id: pulumi.Input<string>;
}
+9
View File
@@ -6,6 +6,9 @@ import * as inputs from "./types/input";
import * as outputs from "./types/output";
import * as utilities from "./utilities";
/**
* List every Dokploy project the API token can see.
*/
export function getProjects(opts?: pulumi.InvokeOptions): Promise<GetProjectsResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getProjects:getProjects", {
@@ -16,8 +19,14 @@ export function getProjects(opts?: pulumi.InvokeOptions): Promise<GetProjectsRes
* A collection of values returned by getProjects.
*/
export interface GetProjectsResult {
/**
* All visible projects.
*/
readonly projects: outputs.GetProjectsProject[];
}
/**
* List every Dokploy project the API token can see.
*/
export function getProjectsOutput(opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetProjectsResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getProjects:getProjects", {
+9
View File
@@ -6,6 +6,9 @@ import * as inputs from "./types/input";
import * as outputs from "./types/output";
import * as utilities from "./utilities";
/**
* 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.
*/
export function getServers(opts?: pulumi.InvokeOptions): Promise<GetServersResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getServers:getServers", {
@@ -16,8 +19,14 @@ export function getServers(opts?: pulumi.InvokeOptions): Promise<GetServersResul
* A collection of values returned by getServers.
*/
export interface GetServersResult {
/**
* All registered servers.
*/
readonly servers: outputs.GetServersServer[];
}
/**
* 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.
*/
export function getServersOutput(opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetServersResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getServers:getServers", {
+48
View File
@@ -25,6 +25,11 @@ export type Destination = import("./destination").Destination;
export const Destination: typeof import("./destination").Destination = null as any;
utilities.lazyLoad(exports, ["Destination"], () => require("./destination"));
export { DnsProviderArgs, DnsProviderState } from "./dnsProvider";
export type DnsProvider = import("./dnsProvider").DnsProvider;
export const DnsProvider: typeof import("./dnsProvider").DnsProvider = null as any;
utilities.lazyLoad(exports, ["DnsProvider"], () => require("./dnsProvider"));
export { DomainArgs, DomainState } from "./domain";
export type Domain = import("./domain").Domain;
export const Domain: typeof import("./domain").Domain = null as any;
@@ -60,6 +65,11 @@ export const getServers: typeof import("./getServers").getServers = null as any;
export const getServersOutput: typeof import("./getServers").getServersOutput = null as any;
utilities.lazyLoad(exports, ["getServers","getServersOutput"], () => require("./getServers"));
export { LibsqlArgs, LibsqlState } from "./libsql";
export type Libsql = import("./libsql").Libsql;
export const Libsql: typeof import("./libsql").Libsql = null as any;
utilities.lazyLoad(exports, ["Libsql"], () => require("./libsql"));
export { MariaDbArgs, MariaDbState } from "./mariaDb";
export type MariaDb = import("./mariaDb").MariaDb;
export const MariaDb: typeof import("./mariaDb").MariaDb = null as any;
@@ -80,6 +90,11 @@ export type MySql = import("./mySql").MySql;
export const MySql: typeof import("./mySql").MySql = null as any;
utilities.lazyLoad(exports, ["MySql"], () => require("./mySql"));
export { NetworkArgs, NetworkState } from "./network";
export type Network = import("./network").Network;
export const Network: typeof import("./network").Network = null as any;
utilities.lazyLoad(exports, ["Network"], () => require("./network"));
export { PortArgs, PortState } from "./port";
export type Port = import("./port").Port;
export const Port: typeof import("./port").Port = null as any;
@@ -113,6 +128,11 @@ export type Registry = import("./registry").Registry;
export const Registry: typeof import("./registry").Registry = null as any;
utilities.lazyLoad(exports, ["Registry"], () => require("./registry"));
export { ScheduleArgs, ScheduleState } from "./schedule";
export type Schedule = import("./schedule").Schedule;
export const Schedule: typeof import("./schedule").Schedule = null as any;
utilities.lazyLoad(exports, ["Schedule"], () => require("./schedule"));
export { SecurityArgs, SecurityState } from "./security";
export type Security = import("./security").Security;
export const Security: typeof import("./security").Security = null as any;
@@ -123,6 +143,16 @@ export type SshKey = import("./sshKey").SshKey;
export const SshKey: typeof import("./sshKey").SshKey = null as any;
utilities.lazyLoad(exports, ["SshKey"], () => require("./sshKey"));
export { VaultProviderArgs, VaultProviderState } from "./vaultProvider";
export type VaultProvider = import("./vaultProvider").VaultProvider;
export const VaultProvider: typeof import("./vaultProvider").VaultProvider = null as any;
utilities.lazyLoad(exports, ["VaultProvider"], () => require("./vaultProvider"));
export { VolumeBackupArgs, VolumeBackupState } from "./volumeBackup";
export type VolumeBackup = import("./volumeBackup").VolumeBackup;
export const VolumeBackup: typeof import("./volumeBackup").VolumeBackup = null as any;
utilities.lazyLoad(exports, ["VolumeBackup"], () => require("./volumeBackup"));
// Export sub-modules:
import * as config from "./config";
@@ -145,10 +175,14 @@ const _module = {
return new Compose(name, <any>undefined, { urn })
case "dokploy:index/destination:Destination":
return new Destination(name, <any>undefined, { urn })
case "dokploy:index/dnsProvider:DnsProvider":
return new DnsProvider(name, <any>undefined, { urn })
case "dokploy:index/domain:Domain":
return new Domain(name, <any>undefined, { urn })
case "dokploy:index/environment:Environment":
return new Environment(name, <any>undefined, { urn })
case "dokploy:index/libsql:Libsql":
return new Libsql(name, <any>undefined, { urn })
case "dokploy:index/mariaDb:MariaDb":
return new MariaDb(name, <any>undefined, { urn })
case "dokploy:index/mongo:Mongo":
@@ -157,6 +191,8 @@ const _module = {
return new Mount(name, <any>undefined, { urn })
case "dokploy:index/mySql:MySql":
return new MySql(name, <any>undefined, { urn })
case "dokploy:index/network:Network":
return new Network(name, <any>undefined, { urn })
case "dokploy:index/port:Port":
return new Port(name, <any>undefined, { urn })
case "dokploy:index/postgres:Postgres":
@@ -169,10 +205,16 @@ const _module = {
return new Redis(name, <any>undefined, { urn })
case "dokploy:index/registry:Registry":
return new Registry(name, <any>undefined, { urn })
case "dokploy:index/schedule:Schedule":
return new Schedule(name, <any>undefined, { urn })
case "dokploy:index/security:Security":
return new Security(name, <any>undefined, { urn })
case "dokploy:index/sshKey:SshKey":
return new SshKey(name, <any>undefined, { urn })
case "dokploy:index/vaultProvider:VaultProvider":
return new VaultProvider(name, <any>undefined, { urn })
case "dokploy:index/volumeBackup:VolumeBackup":
return new VolumeBackup(name, <any>undefined, { urn })
default:
throw new Error(`unknown resource type ${type}`);
}
@@ -182,20 +224,26 @@ pulumi.runtime.registerResourceModule("dokploy", "index/application", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/certificate", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/compose", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/destination", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/dnsProvider", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/domain", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/environment", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/libsql", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mariaDb", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mongo", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mount", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mySql", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/network", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/port", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/postgres", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/project", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/redirect", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/redis", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/registry", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/schedule", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/security", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/sshKey", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/vaultProvider", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/volumeBackup", _module)
pulumi.runtime.registerResourcePackage("dokploy", {
version: utilities.getVersion(),
constructProvider: (name: string, type: string, urn: string): pulumi.ProviderResource => {
+572
View File
@@ -0,0 +1,572 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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`.
*/
export class Libsql extends pulumi.CustomResource {
/**
* Get an existing Libsql resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: LibsqlState, opts?: pulumi.CustomResourceOptions): Libsql {
return new Libsql(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/libsql:Libsql';
/**
* Returns true if the given object is an instance of Libsql. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Libsql {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Libsql.__pulumiType;
}
/**
* Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
declare public /*out*/ readonly applicationStatus: pulumi.Output<string>;
/**
* Override the container entrypoint command.
*/
declare public readonly command: pulumi.Output<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
declare public readonly cpuLimit: pulumi.Output<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
declare public readonly cpuReservation: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Password for the database user.
*/
declare public readonly databasePassword: pulumi.Output<string>;
/**
* Database user to create.
*/
declare public readonly databaseUser: pulumi.Output<string>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
declare public readonly detachDokployNetwork: pulumi.Output<boolean>;
/**
* libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
*/
declare public readonly dockerImage: pulumi.Output<string>;
/**
* Serve multiple logical databases from one instance through libSQL namespaces.
*/
declare public readonly enableNamespaces: pulumi.Output<boolean>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
declare public readonly endpointSpecSwarm: pulumi.Output<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
declare public readonly env: pulumi.Output<string | undefined>;
/**
* Environment this database belongs to.
*/
declare public readonly environmentId: pulumi.Output<string>;
/**
* Host port exposing the admin API.
*/
declare public readonly externalAdminPort: pulumi.Output<number | undefined>;
/**
* Host port exposing the gRPC replication endpoint.
*/
declare public readonly externalGrpcPort: pulumi.Output<number | undefined>;
/**
* Host port exposing the HTTP API.
*/
declare public readonly externalPort: pulumi.Output<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
declare public readonly healthCheckSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
declare public readonly labelsSwarm: pulumi.Output<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
declare public readonly memoryLimit: pulumi.Output<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
declare public readonly memoryReservation: pulumi.Output<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
declare public readonly modeSwarm: pulumi.Output<string | undefined>;
/**
* Display name of the database.
*/
declare public readonly name: pulumi.Output<string>;
/**
* IDs of additional Docker networks to attach.
*/
declare public readonly networkIds: pulumi.Output<string[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
declare public readonly networkSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
declare public readonly placementSwarm: pulumi.Output<string | undefined>;
/**
* Number of replicas to run.
*/
declare public readonly replicas: pulumi.Output<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
declare public readonly restartPolicySwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
declare public readonly rollbackConfigSwarm: pulumi.Output<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
*/
declare public readonly sqldNode: pulumi.Output<string>;
/**
* URL of the primary node, when `sqldNode` is `replica`.
*/
declare public readonly sqldPrimaryUrl: pulumi.Output<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
declare public readonly stopGracePeriodSwarm: pulumi.Output<number | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
declare public readonly updateConfigSwarm: pulumi.Output<string | undefined>;
/**
* Create a Libsql resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: LibsqlArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: LibsqlArgs | LibsqlState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as LibsqlState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["applicationStatus"] = state?.applicationStatus;
resourceInputs["command"] = state?.command;
resourceInputs["cpuLimit"] = state?.cpuLimit;
resourceInputs["cpuReservation"] = state?.cpuReservation;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["databasePassword"] = state?.databasePassword;
resourceInputs["databaseUser"] = state?.databaseUser;
resourceInputs["description"] = state?.description;
resourceInputs["detachDokployNetwork"] = state?.detachDokployNetwork;
resourceInputs["dockerImage"] = state?.dockerImage;
resourceInputs["enableNamespaces"] = state?.enableNamespaces;
resourceInputs["endpointSpecSwarm"] = state?.endpointSpecSwarm;
resourceInputs["env"] = state?.env;
resourceInputs["environmentId"] = state?.environmentId;
resourceInputs["externalAdminPort"] = state?.externalAdminPort;
resourceInputs["externalGrpcPort"] = state?.externalGrpcPort;
resourceInputs["externalPort"] = state?.externalPort;
resourceInputs["healthCheckSwarm"] = state?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = state?.labelsSwarm;
resourceInputs["memoryLimit"] = state?.memoryLimit;
resourceInputs["memoryReservation"] = state?.memoryReservation;
resourceInputs["modeSwarm"] = state?.modeSwarm;
resourceInputs["name"] = state?.name;
resourceInputs["networkIds"] = state?.networkIds;
resourceInputs["networkSwarm"] = state?.networkSwarm;
resourceInputs["placementSwarm"] = state?.placementSwarm;
resourceInputs["replicas"] = state?.replicas;
resourceInputs["restartPolicySwarm"] = state?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = state?.rollbackConfigSwarm;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["sqldNode"] = state?.sqldNode;
resourceInputs["sqldPrimaryUrl"] = state?.sqldPrimaryUrl;
resourceInputs["stopGracePeriodSwarm"] = state?.stopGracePeriodSwarm;
resourceInputs["updateConfigSwarm"] = state?.updateConfigSwarm;
} else {
const args = argsOrState as LibsqlArgs | undefined;
if (args?.databasePassword === undefined && !opts.urn) {
throw new Error("Missing required property 'databasePassword'");
}
if (args?.databaseUser === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseUser'");
}
if (args?.dockerImage === undefined && !opts.urn) {
throw new Error("Missing required property 'dockerImage'");
}
if (args?.environmentId === undefined && !opts.urn) {
throw new Error("Missing required property 'environmentId'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["command"] = args?.command;
resourceInputs["cpuLimit"] = args?.cpuLimit;
resourceInputs["cpuReservation"] = args?.cpuReservation;
resourceInputs["databasePassword"] = args?.databasePassword ? pulumi.secret(args.databasePassword) : undefined;
resourceInputs["databaseUser"] = args?.databaseUser;
resourceInputs["description"] = args?.description;
resourceInputs["detachDokployNetwork"] = args?.detachDokployNetwork;
resourceInputs["dockerImage"] = args?.dockerImage;
resourceInputs["enableNamespaces"] = args?.enableNamespaces;
resourceInputs["endpointSpecSwarm"] = args?.endpointSpecSwarm;
resourceInputs["env"] = args?.env;
resourceInputs["environmentId"] = args?.environmentId;
resourceInputs["externalAdminPort"] = args?.externalAdminPort;
resourceInputs["externalGrpcPort"] = args?.externalGrpcPort;
resourceInputs["externalPort"] = args?.externalPort;
resourceInputs["healthCheckSwarm"] = args?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = args?.labelsSwarm;
resourceInputs["memoryLimit"] = args?.memoryLimit;
resourceInputs["memoryReservation"] = args?.memoryReservation;
resourceInputs["modeSwarm"] = args?.modeSwarm;
resourceInputs["name"] = args?.name;
resourceInputs["networkIds"] = args?.networkIds;
resourceInputs["networkSwarm"] = args?.networkSwarm;
resourceInputs["placementSwarm"] = args?.placementSwarm;
resourceInputs["replicas"] = args?.replicas;
resourceInputs["restartPolicySwarm"] = args?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = args?.rollbackConfigSwarm;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["sqldNode"] = args?.sqldNode;
resourceInputs["sqldPrimaryUrl"] = args?.sqldPrimaryUrl;
resourceInputs["stopGracePeriodSwarm"] = args?.stopGracePeriodSwarm;
resourceInputs["updateConfigSwarm"] = args?.updateConfigSwarm;
resourceInputs["applicationStatus"] = undefined /*out*/;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["databasePassword"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(Libsql.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Libsql resources.
*/
export interface LibsqlState {
/**
* 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.Input<string | undefined>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string | undefined>;
/**
* Password for the database user.
*/
databasePassword?: pulumi.Input<string | undefined>;
/**
* Database user to create.
*/
databaseUser?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
*/
dockerImage?: pulumi.Input<string | undefined>;
/**
* Serve multiple logical databases from one instance through libSQL namespaces.
*/
enableNamespaces?: pulumi.Input<boolean | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string | undefined>;
/**
* Host port exposing the admin API.
*/
externalAdminPort?: pulumi.Input<number | undefined>;
/**
* Host port exposing the gRPC replication endpoint.
*/
externalGrpcPort?: pulumi.Input<number | undefined>;
/**
* Host port exposing the HTTP API.
*/
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string | undefined>;
/**
* Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
*/
sqldNode?: pulumi.Input<string | undefined>;
/**
* URL of the primary node, when `sqldNode` is `replica`.
*/
sqldPrimaryUrl?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a Libsql resource.
*/
export interface LibsqlArgs {
/**
* 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.Input<string | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string | undefined>;
/**
* Password for the database user.
*/
databasePassword: pulumi.Input<string>;
/**
* Database user to create.
*/
databaseUser: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.
*/
dockerImage: pulumi.Input<string>;
/**
* Serve multiple logical databases from one instance through libSQL namespaces.
*/
enableNamespaces?: pulumi.Input<boolean | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
environmentId: pulumi.Input<string>;
/**
* Host port exposing the admin API.
*/
externalAdminPort?: pulumi.Input<number | undefined>;
/**
* Host port exposing the gRPC replication endpoint.
*/
externalGrpcPort?: pulumi.Input<number | undefined>;
/**
* Host port exposing the HTTP API.
*/
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string | undefined>;
/**
* Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`.
*/
sqldNode?: pulumi.Input<string | undefined>;
/**
* URL of the primary node, when `sqldNode` is `replica`.
*/
sqldPrimaryUrl?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
+67 -60
View File
@@ -4,6 +4,13 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class MariaDb extends pulumi.CustomResource {
/**
* Get an existing MariaDb resource's state with the given name, ID, and optional extra
@@ -285,139 +292,139 @@ export interface MariaDbState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
applicationStatus?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Name of the database to create.
*/
databaseName?: pulumi.Input<string>;
databaseName?: pulumi.Input<string | undefined>;
/**
* Password for the database user.
*/
databasePassword?: pulumi.Input<string>;
databasePassword?: pulumi.Input<string | undefined>;
/**
* Password for the MariaDB `root` user.
*/
databaseRootPassword?: pulumi.Input<string>;
databaseRootPassword?: pulumi.Input<string | undefined>;
/**
* Database user to create.
*/
databaseUser?: pulumi.Input<string>;
databaseUser?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* MariaDB image to run, for example `mariadb:11`.
*/
dockerImage?: pulumi.Input<string>;
dockerImage?: pulumi.Input<string | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
environmentId?: pulumi.Input<string | undefined>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
/**
@@ -427,23 +434,23 @@ export interface MariaDbArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* Name of the database to create.
*/
@@ -463,11 +470,11 @@ export interface MariaDbArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* MariaDB image to run, for example `mariadb:11`.
*/
@@ -475,11 +482,11 @@ export interface MariaDbArgs {
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
@@ -487,69 +494,69 @@ export interface MariaDbArgs {
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
+68 -61
View File
@@ -4,6 +4,13 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Mongo extends pulumi.CustomResource {
/**
* Get an existing Mongo resource's state with the given name, ID, and optional extra
@@ -270,135 +277,135 @@ export interface MongoState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
applicationStatus?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Password for the root user.
*/
databasePassword?: pulumi.Input<string>;
databasePassword?: pulumi.Input<string | undefined>;
/**
* Root username to create.
*/
databaseUser?: pulumi.Input<string>;
databaseUser?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* MongoDB image to run. Defaults to `mongo:8`.
*/
dockerImage?: pulumi.Input<string>;
dockerImage?: pulumi.Input<string | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
environmentId?: pulumi.Input<string | undefined>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Start the instance as a single-node replica set.
*/
replicaSets?: pulumi.Input<boolean>;
replicaSets?: pulumi.Input<boolean | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
/**
@@ -408,23 +415,23 @@ export interface MongoArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* Password for the root user.
*/
@@ -436,23 +443,23 @@ export interface MongoArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* MongoDB image to run. Defaults to `mongo:8`.
*/
dockerImage?: pulumi.Input<string>;
dockerImage?: pulumi.Input<string | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
@@ -460,73 +467,73 @@ export interface MongoArgs {
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Start the instance as a single-node replica set.
*/
replicaSets?: pulumi.Input<boolean>;
replicaSets?: pulumi.Input<boolean | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
+24 -15
View File
@@ -4,6 +4,15 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Mount extends pulumi.CustomResource {
/**
* Get an existing Mount resource's state with the given name, ID, and optional extra
@@ -53,7 +62,7 @@ export class Mount extends pulumi.CustomResource {
*/
declare public readonly serviceId: pulumi.Output<string>;
/**
* 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`.
*/
declare public readonly serviceType: pulumi.Output<string>;
/**
@@ -121,35 +130,35 @@ export interface MountState {
/**
* Contents of the generated file, when `type` is `file`.
*/
content?: pulumi.Input<string>;
content?: pulumi.Input<string | undefined>;
/**
* Path of the generated file, when `type` is `file`.
*/
filePath?: pulumi.Input<string>;
filePath?: pulumi.Input<string | undefined>;
/**
* Path on the host, when `type` is `bind`.
*/
hostPath?: pulumi.Input<string>;
hostPath?: pulumi.Input<string | undefined>;
/**
* Path inside the container where the mount appears.
*/
mountPath?: pulumi.Input<string>;
mountPath?: pulumi.Input<string | undefined>;
/**
* 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.Input<string>;
serviceId?: pulumi.Input<string | undefined>;
/**
* 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.Input<string>;
serviceType?: pulumi.Input<string | undefined>;
/**
* The kind of mount to create. Valid values: `bind`, `volume`, `file`.
*/
type?: pulumi.Input<string>;
type?: pulumi.Input<string | undefined>;
/**
* Name of the Docker volume, when `type` is `volume`.
*/
volumeName?: pulumi.Input<string>;
volumeName?: pulumi.Input<string | undefined>;
}
/**
@@ -159,15 +168,15 @@ export interface MountArgs {
/**
* Contents of the generated file, when `type` is `file`.
*/
content?: pulumi.Input<string>;
content?: pulumi.Input<string | undefined>;
/**
* Path of the generated file, when `type` is `file`.
*/
filePath?: pulumi.Input<string>;
filePath?: pulumi.Input<string | undefined>;
/**
* Path on the host, when `type` is `bind`.
*/
hostPath?: pulumi.Input<string>;
hostPath?: pulumi.Input<string | undefined>;
/**
* Path inside the container where the mount appears.
*/
@@ -177,7 +186,7 @@ export interface MountArgs {
*/
serviceId: pulumi.Input<string>;
/**
* 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.Input<string>;
/**
@@ -187,5 +196,5 @@ export interface MountArgs {
/**
* Name of the Docker volume, when `type` is `volume`.
*/
volumeName?: pulumi.Input<string>;
volumeName?: pulumi.Input<string | undefined>;
}
+67 -60
View File
@@ -4,6 +4,13 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class MySql extends pulumi.CustomResource {
/**
* Get an existing MySql resource's state with the given name, ID, and optional extra
@@ -285,139 +292,139 @@ export interface MySqlState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
applicationStatus?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Name of the database to create.
*/
databaseName?: pulumi.Input<string>;
databaseName?: pulumi.Input<string | undefined>;
/**
* Password for the database user.
*/
databasePassword?: pulumi.Input<string>;
databasePassword?: pulumi.Input<string | undefined>;
/**
* Password for the MySQL `root` user.
*/
databaseRootPassword?: pulumi.Input<string>;
databaseRootPassword?: pulumi.Input<string | undefined>;
/**
* Database user to create.
*/
databaseUser?: pulumi.Input<string>;
databaseUser?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* MySQL image to run, for example `mysql:8`.
*/
dockerImage?: pulumi.Input<string>;
dockerImage?: pulumi.Input<string | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
environmentId?: pulumi.Input<string | undefined>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
/**
@@ -427,23 +434,23 @@ export interface MySqlArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* Name of the database to create.
*/
@@ -463,11 +470,11 @@ export interface MySqlArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* MySQL image to run, for example `mysql:8`.
*/
@@ -475,11 +482,11 @@ export interface MySqlArgs {
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
@@ -487,69 +494,69 @@ export interface MySqlArgs {
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
+220
View File
@@ -0,0 +1,220 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* A Docker network managed by Dokploy.
*
* Attach services to it with `networkIds` on `dokploy.Application`, `dokploy.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.
*/
export class Network extends pulumi.CustomResource {
/**
* Get an existing Network resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: NetworkState, opts?: pulumi.CustomResourceOptions): Network {
return new Network(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/network:Network';
/**
* Returns true if the given object is an instance of Network. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Network {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Network.__pulumiType;
}
/**
* Allow standalone containers to attach to an overlay network.
*/
declare public readonly attachable: pulumi.Output<boolean>;
/**
* RFC 3339 timestamp of when the network was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
*/
declare public readonly driver: pulumi.Output<string>;
/**
* Enable IPv4 address allocation.
*/
declare public readonly enableIpv4: pulumi.Output<boolean>;
/**
* Enable IPv6 address allocation.
*/
declare public readonly enableIpv6: pulumi.Output<boolean>;
/**
* Isolate the network from external access.
*/
declare public readonly internal: pulumi.Output<boolean>;
/**
* Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
*/
declare public readonly ipam: pulumi.Output<string | undefined>;
/**
* Maximum transmission unit for the network. Leave unset to use Docker's default.
*/
declare public readonly mtu: pulumi.Output<number | undefined>;
/**
* Name of the Docker network.
*/
declare public readonly name: pulumi.Output<string>;
/**
* Organization that owns the network.
*/
declare public /*out*/ readonly organizationId: pulumi.Output<string>;
/**
* Remote server to create the network on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Create a Network resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args?: NetworkArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: NetworkArgs | NetworkState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as NetworkState | undefined;
resourceInputs["attachable"] = state?.attachable;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["driver"] = state?.driver;
resourceInputs["enableIpv4"] = state?.enableIpv4;
resourceInputs["enableIpv6"] = state?.enableIpv6;
resourceInputs["internal"] = state?.internal;
resourceInputs["ipam"] = state?.ipam;
resourceInputs["mtu"] = state?.mtu;
resourceInputs["name"] = state?.name;
resourceInputs["organizationId"] = state?.organizationId;
resourceInputs["serverId"] = state?.serverId;
} else {
const args = argsOrState as NetworkArgs | undefined;
resourceInputs["attachable"] = args?.attachable;
resourceInputs["driver"] = args?.driver;
resourceInputs["enableIpv4"] = args?.enableIpv4;
resourceInputs["enableIpv6"] = args?.enableIpv6;
resourceInputs["internal"] = args?.internal;
resourceInputs["ipam"] = args?.ipam;
resourceInputs["mtu"] = args?.mtu;
resourceInputs["name"] = args?.name;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["createdAt"] = undefined /*out*/;
resourceInputs["organizationId"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Network.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Network resources.
*/
export interface NetworkState {
/**
* Allow standalone containers to attach to an overlay network.
*/
attachable?: pulumi.Input<boolean | undefined>;
/**
* RFC 3339 timestamp of when the network was created.
*/
createdAt?: pulumi.Input<string | undefined>;
/**
* Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
*/
driver?: pulumi.Input<string | undefined>;
/**
* Enable IPv4 address allocation.
*/
enableIpv4?: pulumi.Input<boolean | undefined>;
/**
* Enable IPv6 address allocation.
*/
enableIpv6?: pulumi.Input<boolean | undefined>;
/**
* Isolate the network from external access.
*/
internal?: pulumi.Input<boolean | undefined>;
/**
* Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
*/
ipam?: pulumi.Input<string | undefined>;
/**
* Maximum transmission unit for the network. Leave unset to use Docker's default.
*/
mtu?: pulumi.Input<number | undefined>;
/**
* Name of the Docker network.
*/
name?: pulumi.Input<string | undefined>;
/**
* Organization that owns the network.
*/
organizationId?: pulumi.Input<string | undefined>;
/**
* Remote server to create the network on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a Network resource.
*/
export interface NetworkArgs {
/**
* Allow standalone containers to attach to an overlay network.
*/
attachable?: pulumi.Input<boolean | undefined>;
/**
* Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`.
*/
driver?: pulumi.Input<string | undefined>;
/**
* Enable IPv4 address allocation.
*/
enableIpv4?: pulumi.Input<boolean | undefined>;
/**
* Enable IPv6 address allocation.
*/
enableIpv6?: pulumi.Input<boolean | undefined>;
/**
* Isolate the network from external access.
*/
internal?: pulumi.Input<boolean | undefined>;
/**
* Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet.
*/
ipam?: pulumi.Input<string | undefined>;
/**
* Maximum transmission unit for the network. Leave unset to use Docker's default.
*/
mtu?: pulumi.Input<number | undefined>;
/**
* Name of the Docker network.
*/
name?: pulumi.Input<string | undefined>;
/**
* Remote server to create the network on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string | undefined>;
}
+44 -24
View File
@@ -1,12 +1,12 @@
{
"name": "@maxvojtkov/pulumi-dokploy",
"version": "0.1.0",
"version": "0.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@maxvojtkov/pulumi-dokploy",
"version": "0.1.0",
"version": "0.2.0",
"license": "MPL-2.0",
"dependencies": {
"@pulumi/pulumi": "^3.0.0"
@@ -858,9 +858,9 @@
"license": "BSD-3-Clause"
},
"node_modules/@pulumi/pulumi": {
"version": "3.256.0",
"resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.256.0.tgz",
"integrity": "sha512-EK1TQieOmxTxbIpX5EKTPpC1WYappH3ASEZzN6Q9gs7rZjuZCATXI9Am8nszmlRdtPlAiVSW8NfQNKCnaNk34A==",
"version": "3.259.0",
"resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.259.0.tgz",
"integrity": "sha512-DRc1bDHWTofZGkKcs/bx98LujCZJNoKRkOdeEhQZNz7wPUX/obhuzmWJezew2FUCEAy1xXHtQj1CTcANHoLn3A==",
"license": "Apache-2.0",
"dependencies": {
"@grpc/grpc-js": "^1.10.1",
@@ -927,9 +927,9 @@
}
},
"node_modules/@sigstore/protobuf-specs": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.1.tgz",
"integrity": "sha512-/ScWUhhoFasJsSRGTVBwId1loQjjnjAfE4djL6ZhrXRpNCmPTnUKF5Jokd58ILseOMjzET3UrMOtJPS9sYeI0g==",
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.2.tgz",
"integrity": "sha512-SQqvFMt4V78fdjcDdYX6HbiVSOR4QK3ZgwCa2KOsopAgPIHy1rU5UDUmzLl02r5oyyaYcYHR1hpwDRk/yUe+Mw==",
"license": "Apache-2.0",
"engines": {
"node": "^18.17.0 || >=20.5.0"
@@ -1144,9 +1144,9 @@
}
},
"node_modules/cjs-module-lexer": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz",
"integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==",
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.1.tgz",
"integrity": "sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==",
"license": "MIT"
},
"node_modules/cliui": {
@@ -1199,6 +1199,19 @@
"node": ">= 18"
}
},
"node_modules/content-type": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz",
"integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -1279,9 +1292,9 @@
}
},
"node_modules/es-module-lexer": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
"integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz",
"integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==",
"license": "MIT"
},
"node_modules/escalade": {
@@ -1507,9 +1520,9 @@
}
},
"node_modules/ip-address": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.4.0.tgz",
"integrity": "sha512-oSK96Grm3aP6OrS263xVxbNDGVL7rzBtYdpGqlDG8iQdoenDoTs/nkki+DflYbAEE8Xl6o5YxhxlrKvI3nqKXQ==",
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz",
"integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==",
"license": "MIT",
"engines": {
"node": ">= 12"
@@ -1824,12 +1837,19 @@
"license": "MIT"
},
"node_modules/negotiator": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz",
"integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==",
"license": "MIT",
"dependencies": {
"content-type": "^2.1.0"
},
"engines": {
"node": ">= 0.6"
"node": ">=18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/node-gyp": {
@@ -2108,9 +2128,9 @@
}
},
"node_modules/picomatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
"integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
"license": "MIT",
"engines": {
"node": ">=12"
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@maxvojtkov/pulumi-dokploy",
"version": "0.1.0",
"description": "A Pulumi package for creating and managing Dokploy resources. Based on terraform-provider-dokploy: version v0.1.0",
"version": "0.2.0",
"description": "A Pulumi package for creating and managing Dokploy resources. Based on terraform-provider-dokploy: version v0.2.0",
"keywords": [
"pulumi",
"dokploy",
@@ -27,7 +27,7 @@
"pulumi": {
"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}"
}
}
+9 -6
View File
@@ -4,6 +4,9 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* A published port that exposes an application directly on the host, bypassing Traefik.
*/
export class Port extends pulumi.CustomResource {
/**
* Get an existing Port resource's state with the given name, ID, and optional extra
@@ -103,23 +106,23 @@ export interface PortState {
/**
* Application this port belongs to.
*/
applicationId?: pulumi.Input<string>;
applicationId?: pulumi.Input<string | undefined>;
/**
* Transport protocol. Valid values: `tcp`, `udp`.
*/
protocol?: pulumi.Input<string>;
protocol?: pulumi.Input<string | undefined>;
/**
* Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
*/
publishMode?: pulumi.Input<string>;
publishMode?: pulumi.Input<string | undefined>;
/**
* Port exposed on the host.
*/
publishedPort?: pulumi.Input<number>;
publishedPort?: pulumi.Input<number | undefined>;
/**
* Port the container listens on.
*/
targetPort?: pulumi.Input<number>;
targetPort?: pulumi.Input<number | undefined>;
}
/**
@@ -137,7 +140,7 @@ export interface PortArgs {
/**
* Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
*/
publishMode?: pulumi.Input<string>;
publishMode?: pulumi.Input<string | undefined>;
/**
* Port exposed on the host.
*/
+66 -59
View File
@@ -4,6 +4,13 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Postgres extends pulumi.CustomResource {
/**
* Get an existing Postgres resource's state with the given name, ID, and optional extra
@@ -276,135 +283,135 @@ export interface PostgresState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
applicationStatus?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Name of the database to create.
*/
databaseName?: pulumi.Input<string>;
databaseName?: pulumi.Input<string | undefined>;
/**
* Password for the database user.
*/
databasePassword?: pulumi.Input<string>;
databasePassword?: pulumi.Input<string | undefined>;
/**
* Database user to create.
*/
databaseUser?: pulumi.Input<string>;
databaseUser?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* PostgreSQL image to run, for example `postgres:16`.
*/
dockerImage?: pulumi.Input<string>;
dockerImage?: pulumi.Input<string | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
environmentId?: pulumi.Input<string | undefined>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
/**
@@ -414,23 +421,23 @@ export interface PostgresArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* Name of the database to create.
*/
@@ -446,11 +453,11 @@ export interface PostgresArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* PostgreSQL image to run, for example `postgres:16`.
*/
@@ -458,11 +465,11 @@ export interface PostgresArgs {
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
@@ -470,69 +477,69 @@ export interface PostgresArgs {
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
+14 -9
View File
@@ -4,6 +4,11 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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 `dokploy.Environment` resource.
*/
export class Project extends pulumi.CustomResource {
/**
* Get an existing Project resource's state with the given name, ID, and optional extra
@@ -97,27 +102,27 @@ export interface ProjectState {
/**
* RFC 3339 timestamp of when the project was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* ID of the `production` environment that Dokploy creates automatically with the project.
*/
defaultEnvironmentId?: pulumi.Input<string>;
defaultEnvironmentId?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Display name of the project.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* Organization that owns the project.
*/
organizationId?: pulumi.Input<string>;
organizationId?: pulumi.Input<string | undefined>;
}
/**
@@ -127,13 +132,13 @@ export interface ProjectArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Display name of the project.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
}
+4 -4
View File
@@ -73,19 +73,19 @@ export interface ProviderArgs {
/**
* API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
*/
apiKey?: pulumi.Input<string>;
apiKey?: pulumi.Input<string | undefined>;
/**
* Base URL of the Dokploy instance, for example `https://dokploy.example.com`. A trailing `/api` is optional. May also be set with the `DOKPLOY_HOST` environment variable.
*/
host?: pulumi.Input<string>;
host?: pulumi.Input<string | undefined>;
/**
* Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `false`.
*/
insecureSkipVerify?: pulumi.Input<boolean>;
insecureSkipVerify?: pulumi.Input<boolean | undefined>;
/**
* Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable.
*/
timeoutSeconds?: pulumi.Input<number>;
timeoutSeconds?: pulumi.Input<number | undefined>;
}
export namespace Provider {
+9 -6
View File
@@ -4,6 +4,9 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* A Traefik redirect rule attached to an application.
*/
export class Redirect extends pulumi.CustomResource {
/**
* Get an existing Redirect resource's state with the given name, ID, and optional extra
@@ -100,23 +103,23 @@ export interface RedirectState {
/**
* Application this redirect belongs to.
*/
applicationId?: pulumi.Input<string>;
applicationId?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the redirect was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Issue a permanent (301) redirect instead of a temporary (302) one.
*/
permanent?: pulumi.Input<boolean>;
permanent?: pulumi.Input<boolean | undefined>;
/**
* Regular expression matched against the incoming URL.
*/
regex?: pulumi.Input<string>;
regex?: pulumi.Input<string | undefined>;
/**
* Replacement URL, which may reference capture groups such as `${1}`.
*/
replacement?: pulumi.Input<string>;
replacement?: pulumi.Input<string | undefined>;
}
/**
@@ -130,7 +133,7 @@ export interface RedirectArgs {
/**
* Issue a permanent (301) redirect instead of a temporary (302) one.
*/
permanent?: pulumi.Input<boolean>;
permanent?: pulumi.Input<boolean | undefined>;
/**
* Regular expression matched against the incoming URL.
*/
+64 -57
View File
@@ -4,6 +4,13 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Redis extends pulumi.CustomResource {
/**
* Get an existing Redis resource's state with the given name, ID, and optional extra
@@ -258,127 +265,127 @@ export interface RedisState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
applicationStatus?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Password used to authenticate to Redis.
*/
databasePassword?: pulumi.Input<string>;
databasePassword?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* Redis image to run, for example `redis:7`.
*/
dockerImage?: pulumi.Input<string>;
dockerImage?: pulumi.Input<string | undefined>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
environmentId?: pulumi.Input<string | undefined>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
/**
@@ -388,23 +395,23 @@ export interface RedisArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
appName?: pulumi.Input<string | undefined>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
args?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
command?: pulumi.Input<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
cpuReservation?: pulumi.Input<string | undefined>;
/**
* Password used to authenticate to Redis.
*/
@@ -412,11 +419,11 @@ export interface RedisArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
detachDokployNetwork?: pulumi.Input<boolean | undefined>;
/**
* Redis image to run, for example `redis:7`.
*/
@@ -424,11 +431,11 @@ export interface RedisArgs {
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
endpointSpecSwarm?: pulumi.Input<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
env?: pulumi.Input<string | undefined>;
/**
* Environment this database belongs to.
*/
@@ -436,69 +443,69 @@ export interface RedisArgs {
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
externalPort?: pulumi.Input<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
healthCheckSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
labelsSwarm?: pulumi.Input<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
memoryLimit?: pulumi.Input<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
memoryReservation?: pulumi.Input<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
modeSwarm?: pulumi.Input<string | undefined>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
networkIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
networkSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
placementSwarm?: pulumi.Input<string | undefined>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
replicas?: pulumi.Input<number | undefined>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
restartPolicySwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
rollbackConfigSwarm?: pulumi.Input<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
stopGracePeriodSwarm?: pulumi.Input<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
ulimitsSwarm?: pulumi.Input<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
updateConfigSwarm?: pulumi.Input<string | undefined>;
}
+14 -11
View File
@@ -4,6 +4,9 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* A container registry that Dokploy pushes built images to and pulls them from.
*/
export class Registry extends pulumi.CustomResource {
/**
* Get an existing Registry resource's state with the given name, ID, and optional extra
@@ -123,35 +126,35 @@ export interface RegistryState {
/**
* RFC 3339 timestamp of when the registry was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Prefix prepended to pushed image names, for example an organization or namespace.
*/
imagePrefix?: pulumi.Input<string>;
imagePrefix?: pulumi.Input<string | undefined>;
/**
* Password or access token used to authenticate.
*/
password?: pulumi.Input<string>;
password?: pulumi.Input<string | undefined>;
/**
* Display name of the registry.
*/
registryName?: pulumi.Input<string>;
registryName?: pulumi.Input<string | undefined>;
/**
* Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
*/
registryType?: pulumi.Input<string>;
registryType?: pulumi.Input<string | undefined>;
/**
* Registry hostname, for example `ghcr.io`.
*/
registryUrl?: pulumi.Input<string>;
registryUrl?: pulumi.Input<string | undefined>;
/**
* Server this registry is scoped to.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Username used to authenticate to the registry.
*/
username?: pulumi.Input<string>;
username?: pulumi.Input<string | undefined>;
}
/**
@@ -161,7 +164,7 @@ export interface RegistryArgs {
/**
* Prefix prepended to pushed image names, for example an organization or namespace.
*/
imagePrefix?: pulumi.Input<string>;
imagePrefix?: pulumi.Input<string | undefined>;
/**
* Password or access token used to authenticate.
*/
@@ -173,7 +176,7 @@ export interface RegistryArgs {
/**
* Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
*/
registryType?: pulumi.Input<string>;
registryType?: pulumi.Input<string | undefined>;
/**
* Registry hostname, for example `ghcr.io`.
*/
@@ -181,7 +184,7 @@ export interface RegistryArgs {
/**
* Server this registry is scoped to.
*/
serverId?: pulumi.Input<string>;
serverId?: pulumi.Input<string | undefined>;
/**
* Username used to authenticate to the registry.
*/
+291
View File
@@ -0,0 +1,291 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Schedule extends pulumi.CustomResource {
/**
* Get an existing Schedule resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ScheduleState, opts?: pulumi.CustomResourceOptions): Schedule {
return new Schedule(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/schedule:Schedule';
/**
* Returns true if the given object is an instance of Schedule. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Schedule {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Schedule.__pulumiType;
}
/**
* Docker service name the schedule targets. Derived by Dokploy when omitted.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Application this schedule belongs to.
*/
declare public readonly applicationId: pulumi.Output<string | undefined>;
/**
* Command to run.
*/
declare public readonly command: pulumi.Output<string>;
/**
* Compose stack this schedule belongs to.
*/
declare public readonly composeId: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the schedule was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Standard five-field cron expression, for example `0 3 * * *`.
*/
declare public readonly cronExpression: pulumi.Output<string>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Whether the schedule is active.
*/
declare public readonly enabled: pulumi.Output<boolean>;
/**
* Display name of the schedule.
*/
declare public readonly name: pulumi.Output<string>;
/**
* Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
*/
declare public readonly scheduleType: pulumi.Output<string>;
/**
* Multi-line script to run instead of a single command.
*/
declare public readonly script: pulumi.Output<string | undefined>;
/**
* Server this schedule runs on.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Service inside a Compose stack to run the command in.
*/
declare public readonly serviceName: pulumi.Output<string | undefined>;
/**
* Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
*/
declare public readonly shellType: pulumi.Output<string>;
/**
* IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
*/
declare public readonly timezone: pulumi.Output<string | undefined>;
/**
* Create a Schedule resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: ScheduleArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: ScheduleArgs | ScheduleState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as ScheduleState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["applicationId"] = state?.applicationId;
resourceInputs["command"] = state?.command;
resourceInputs["composeId"] = state?.composeId;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["cronExpression"] = state?.cronExpression;
resourceInputs["description"] = state?.description;
resourceInputs["enabled"] = state?.enabled;
resourceInputs["name"] = state?.name;
resourceInputs["scheduleType"] = state?.scheduleType;
resourceInputs["script"] = state?.script;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["serviceName"] = state?.serviceName;
resourceInputs["shellType"] = state?.shellType;
resourceInputs["timezone"] = state?.timezone;
} else {
const args = argsOrState as ScheduleArgs | undefined;
if (args?.command === undefined && !opts.urn) {
throw new Error("Missing required property 'command'");
}
if (args?.cronExpression === undefined && !opts.urn) {
throw new Error("Missing required property 'cronExpression'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["applicationId"] = args?.applicationId;
resourceInputs["command"] = args?.command;
resourceInputs["composeId"] = args?.composeId;
resourceInputs["cronExpression"] = args?.cronExpression;
resourceInputs["description"] = args?.description;
resourceInputs["enabled"] = args?.enabled;
resourceInputs["name"] = args?.name;
resourceInputs["scheduleType"] = args?.scheduleType;
resourceInputs["script"] = args?.script;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["serviceName"] = args?.serviceName;
resourceInputs["shellType"] = args?.shellType;
resourceInputs["timezone"] = args?.timezone;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Schedule.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Schedule resources.
*/
export interface ScheduleState {
/**
* Docker service name the schedule targets. Derived by Dokploy when omitted.
*/
appName?: pulumi.Input<string | undefined>;
/**
* Application this schedule belongs to.
*/
applicationId?: pulumi.Input<string | undefined>;
/**
* Command to run.
*/
command?: pulumi.Input<string | undefined>;
/**
* Compose stack this schedule belongs to.
*/
composeId?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the schedule was created.
*/
createdAt?: pulumi.Input<string | undefined>;
/**
* Standard five-field cron expression, for example `0 3 * * *`.
*/
cronExpression?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string | undefined>;
/**
* Whether the schedule is active.
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* Display name of the schedule.
*/
name?: pulumi.Input<string | undefined>;
/**
* Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
*/
scheduleType?: pulumi.Input<string | undefined>;
/**
* Multi-line script to run instead of a single command.
*/
script?: pulumi.Input<string | undefined>;
/**
* Server this schedule runs on.
*/
serverId?: pulumi.Input<string | undefined>;
/**
* Service inside a Compose stack to run the command in.
*/
serviceName?: pulumi.Input<string | undefined>;
/**
* Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
*/
shellType?: pulumi.Input<string | undefined>;
/**
* IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
*/
timezone?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a Schedule resource.
*/
export interface ScheduleArgs {
/**
* Docker service name the schedule targets. Derived by Dokploy when omitted.
*/
appName?: pulumi.Input<string | undefined>;
/**
* Application this schedule belongs to.
*/
applicationId?: pulumi.Input<string | undefined>;
/**
* Command to run.
*/
command: pulumi.Input<string>;
/**
* Compose stack this schedule belongs to.
*/
composeId?: pulumi.Input<string | undefined>;
/**
* Standard five-field cron expression, for example `0 3 * * *`.
*/
cronExpression: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string | undefined>;
/**
* Whether the schedule is active.
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* Display name of the schedule.
*/
name?: pulumi.Input<string | undefined>;
/**
* Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`.
*/
scheduleType?: pulumi.Input<string | undefined>;
/**
* Multi-line script to run instead of a single command.
*/
script?: pulumi.Input<string | undefined>;
/**
* Server this schedule runs on.
*/
serverId?: pulumi.Input<string | undefined>;
/**
* Service inside a Compose stack to run the command in.
*/
serviceName?: pulumi.Input<string | undefined>;
/**
* Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`.
*/
shellType?: pulumi.Input<string | undefined>;
/**
* IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.
*/
timezone?: pulumi.Input<string | undefined>;
}
+9 -4
View File
@@ -4,6 +4,11 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class Security extends pulumi.CustomResource {
/**
* Get an existing Security resource's state with the given name, ID, and optional extra
@@ -96,19 +101,19 @@ export interface SecurityState {
/**
* Application these credentials protect.
*/
applicationId?: pulumi.Input<string>;
applicationId?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the credentials were created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Basic auth password.
*/
password?: pulumi.Input<string>;
password?: pulumi.Input<string | undefined>;
/**
* Basic auth username.
*/
username?: pulumi.Input<string>;
username?: pulumi.Input<string | undefined>;
}
/**
+15 -8
View File
@@ -4,6 +4,13 @@
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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.
*/
export class SshKey extends pulumi.CustomResource {
/**
* Get an existing SshKey resource's state with the given name, ID, and optional extra
@@ -105,27 +112,27 @@ export interface SshKeyState {
/**
* RFC 3339 timestamp of when the key was created.
*/
createdAt?: pulumi.Input<string>;
createdAt?: pulumi.Input<string | undefined>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the key was last used, if ever.
*/
lastUsedAt?: pulumi.Input<string>;
lastUsedAt?: pulumi.Input<string | undefined>;
/**
* Display name of the key pair.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* PEM-encoded private key.
*/
privateKey?: pulumi.Input<string>;
privateKey?: pulumi.Input<string | undefined>;
/**
* OpenSSH-formatted public key.
*/
publicKey?: pulumi.Input<string>;
publicKey?: pulumi.Input<string | undefined>;
}
/**
@@ -135,11 +142,11 @@ export interface SshKeyArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
description?: pulumi.Input<string | undefined>;
/**
* Display name of the key pair.
*/
name?: pulumi.Input<string>;
name?: pulumi.Input<string | undefined>;
/**
* PEM-encoded private key.
*/
+19 -7
View File
@@ -1,16 +1,22 @@
{
"compilerOptions": {
// Output
"outDir": "bin",
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node",
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"stripInternal": true,
"experimentalDecorators": true,
// Environment
"target": "ES2022",
"module": "nodenext",
"moduleResolution": "nodenext",
"moduleDetection": "force",
"types": ["node"],
// Type Checking
"strict": true,
"noFallthroughCasesInSwitch": true,
"forceConsistentCasingInFileNames": true,
"strict": true
"noImplicitReturns": true,
"skipLibCheck": true
},
"files": [
"application.ts",
@@ -19,6 +25,7 @@
"config/index.ts",
"config/vars.ts",
"destination.ts",
"dnsProvider.ts",
"domain.ts",
"environment.ts",
"getApplication.ts",
@@ -27,10 +34,12 @@
"getProjects.ts",
"getServers.ts",
"index.ts",
"libsql.ts",
"mariaDb.ts",
"mongo.ts",
"mount.ts",
"mySql.ts",
"network.ts",
"port.ts",
"postgres.ts",
"project.ts",
@@ -38,11 +47,14 @@
"redirect.ts",
"redis.ts",
"registry.ts",
"schedule.ts",
"security.ts",
"sshKey.ts",
"types/index.ts",
"types/input.ts",
"types/output.ts",
"utilities.ts"
"utilities.ts",
"vaultProvider.ts",
"volumeBackup.ts"
]
}
+154
View File
@@ -0,0 +1,154 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* 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`.
*/
export class VaultProvider extends pulumi.CustomResource {
/**
* Get an existing VaultProvider resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: VaultProviderState, opts?: pulumi.CustomResourceOptions): VaultProvider {
return new VaultProvider(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/vaultProvider:VaultProvider';
/**
* Returns true if the given object is an instance of VaultProvider. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is VaultProvider {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === VaultProvider.__pulumiType;
}
/**
* JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
*/
declare public readonly assignments: pulumi.Output<string>;
/**
* Provider credentials as a JSON object, including the `providerType` discriminator.
*/
declare public readonly config: pulumi.Output<string>;
/**
* RFC 3339 timestamp of when the connection was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Name of the connection, unique within the organization.
*/
declare public readonly name: pulumi.Output<string>;
/**
* Organization that owns the connection.
*/
declare public /*out*/ readonly organizationId: pulumi.Output<string>;
/**
* Provider kind derived from `config`.
*/
declare public /*out*/ readonly providerType: pulumi.Output<string>;
/**
* Create a VaultProvider resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: VaultProviderArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: VaultProviderArgs | VaultProviderState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as VaultProviderState | undefined;
resourceInputs["assignments"] = state?.assignments;
resourceInputs["config"] = state?.config;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["name"] = state?.name;
resourceInputs["organizationId"] = state?.organizationId;
resourceInputs["providerType"] = state?.providerType;
} else {
const args = argsOrState as VaultProviderArgs | undefined;
if (args?.assignments === undefined && !opts.urn) {
throw new Error("Missing required property 'assignments'");
}
if (args?.config === undefined && !opts.urn) {
throw new Error("Missing required property 'config'");
}
resourceInputs["assignments"] = args?.assignments;
resourceInputs["config"] = args?.config ? pulumi.secret(args.config) : undefined;
resourceInputs["name"] = args?.name;
resourceInputs["createdAt"] = undefined /*out*/;
resourceInputs["organizationId"] = undefined /*out*/;
resourceInputs["providerType"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["config"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(VaultProvider.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering VaultProvider resources.
*/
export interface VaultProviderState {
/**
* JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
*/
assignments?: pulumi.Input<string | undefined>;
/**
* Provider credentials as a JSON object, including the `providerType` discriminator.
*/
config?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the connection was created.
*/
createdAt?: pulumi.Input<string | undefined>;
/**
* Name of the connection, unique within the organization.
*/
name?: pulumi.Input<string | undefined>;
/**
* Organization that owns the connection.
*/
organizationId?: pulumi.Input<string | undefined>;
/**
* Provider kind derived from `config`.
*/
providerType?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a VaultProvider resource.
*/
export interface VaultProviderArgs {
/**
* JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.
*/
assignments: pulumi.Input<string>;
/**
* Provider credentials as a JSON object, including the `providerType` discriminator.
*/
config: pulumi.Input<string>;
/**
* Name of the connection, unique within the organization.
*/
name?: pulumi.Input<string | undefined>;
}
+362
View File
@@ -0,0 +1,362 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
/**
* A scheduled backup of a Docker volume to a configured `dokploy.Destination`.
*
* This is the counterpart to a `dokploy.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.
*/
export class VolumeBackup extends pulumi.CustomResource {
/**
* Get an existing VolumeBackup resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: VolumeBackupState, opts?: pulumi.CustomResourceOptions): VolumeBackup {
return new VolumeBackup(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/volumeBackup:VolumeBackup';
/**
* Returns true if the given object is an instance of VolumeBackup. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is VolumeBackup {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === VolumeBackup.__pulumiType;
}
/**
* Docker service name that owns the volume. Derived by Dokploy when omitted.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Application that owns the volume.
*/
declare public readonly applicationId: pulumi.Output<string | undefined>;
/**
* Compose stack that owns the volume.
*/
declare public readonly composeId: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the backup job was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Standard five-field cron expression, for example `0 4 * * *`.
*/
declare public readonly cronExpression: pulumi.Output<string>;
/**
* Backup destination (S3-compatible bucket) to upload to.
*/
declare public readonly destinationId: pulumi.Output<string>;
/**
* Whether the backup schedule is active.
*/
declare public readonly enabled: pulumi.Output<boolean>;
/**
* Number of backups to retain. Older ones are pruned.
*/
declare public readonly keepLatestCount: pulumi.Output<number>;
/**
* libSQL instance that owns the volume.
*/
declare public readonly libsqlId: pulumi.Output<string | undefined>;
/**
* MariaDB instance that owns the volume.
*/
declare public readonly mariadbId: pulumi.Output<string | undefined>;
/**
* MongoDB instance that owns the volume.
*/
declare public readonly mongoId: pulumi.Output<string | undefined>;
/**
* MySQL instance that owns the volume.
*/
declare public readonly mysqlId: pulumi.Output<string | undefined>;
/**
* Display name of the backup job.
*/
declare public readonly name: pulumi.Output<string>;
/**
* PostgreSQL instance that owns the volume.
*/
declare public readonly postgresId: pulumi.Output<string | undefined>;
/**
* Path prefix inside the destination bucket, for example `backups/shop/`.
*/
declare public readonly prefix: pulumi.Output<string>;
/**
* Redis instance that owns the volume.
*/
declare public readonly redisId: pulumi.Output<string | undefined>;
/**
* Service inside a Compose stack that owns the volume.
*/
declare public readonly serviceName: pulumi.Output<string | undefined>;
/**
* The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
*/
declare public readonly serviceType: pulumi.Output<string>;
/**
* Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
*/
declare public readonly turnOff: pulumi.Output<boolean>;
/**
* Name of the Docker volume to back up.
*/
declare public readonly volumeName: pulumi.Output<string>;
/**
* Create a VolumeBackup resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: VolumeBackupArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: VolumeBackupArgs | VolumeBackupState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as VolumeBackupState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["applicationId"] = state?.applicationId;
resourceInputs["composeId"] = state?.composeId;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["cronExpression"] = state?.cronExpression;
resourceInputs["destinationId"] = state?.destinationId;
resourceInputs["enabled"] = state?.enabled;
resourceInputs["keepLatestCount"] = state?.keepLatestCount;
resourceInputs["libsqlId"] = state?.libsqlId;
resourceInputs["mariadbId"] = state?.mariadbId;
resourceInputs["mongoId"] = state?.mongoId;
resourceInputs["mysqlId"] = state?.mysqlId;
resourceInputs["name"] = state?.name;
resourceInputs["postgresId"] = state?.postgresId;
resourceInputs["prefix"] = state?.prefix;
resourceInputs["redisId"] = state?.redisId;
resourceInputs["serviceName"] = state?.serviceName;
resourceInputs["serviceType"] = state?.serviceType;
resourceInputs["turnOff"] = state?.turnOff;
resourceInputs["volumeName"] = state?.volumeName;
} else {
const args = argsOrState as VolumeBackupArgs | undefined;
if (args?.cronExpression === undefined && !opts.urn) {
throw new Error("Missing required property 'cronExpression'");
}
if (args?.destinationId === undefined && !opts.urn) {
throw new Error("Missing required property 'destinationId'");
}
if (args?.prefix === undefined && !opts.urn) {
throw new Error("Missing required property 'prefix'");
}
if (args?.volumeName === undefined && !opts.urn) {
throw new Error("Missing required property 'volumeName'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["applicationId"] = args?.applicationId;
resourceInputs["composeId"] = args?.composeId;
resourceInputs["cronExpression"] = args?.cronExpression;
resourceInputs["destinationId"] = args?.destinationId;
resourceInputs["enabled"] = args?.enabled;
resourceInputs["keepLatestCount"] = args?.keepLatestCount;
resourceInputs["libsqlId"] = args?.libsqlId;
resourceInputs["mariadbId"] = args?.mariadbId;
resourceInputs["mongoId"] = args?.mongoId;
resourceInputs["mysqlId"] = args?.mysqlId;
resourceInputs["name"] = args?.name;
resourceInputs["postgresId"] = args?.postgresId;
resourceInputs["prefix"] = args?.prefix;
resourceInputs["redisId"] = args?.redisId;
resourceInputs["serviceName"] = args?.serviceName;
resourceInputs["serviceType"] = args?.serviceType;
resourceInputs["turnOff"] = args?.turnOff;
resourceInputs["volumeName"] = args?.volumeName;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(VolumeBackup.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering VolumeBackup resources.
*/
export interface VolumeBackupState {
/**
* Docker service name that owns the volume. Derived by Dokploy when omitted.
*/
appName?: pulumi.Input<string | undefined>;
/**
* Application that owns the volume.
*/
applicationId?: pulumi.Input<string | undefined>;
/**
* Compose stack that owns the volume.
*/
composeId?: pulumi.Input<string | undefined>;
/**
* RFC 3339 timestamp of when the backup job was created.
*/
createdAt?: pulumi.Input<string | undefined>;
/**
* Standard five-field cron expression, for example `0 4 * * *`.
*/
cronExpression?: pulumi.Input<string | undefined>;
/**
* Backup destination (S3-compatible bucket) to upload to.
*/
destinationId?: pulumi.Input<string | undefined>;
/**
* Whether the backup schedule is active.
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* Number of backups to retain. Older ones are pruned.
*/
keepLatestCount?: pulumi.Input<number | undefined>;
/**
* libSQL instance that owns the volume.
*/
libsqlId?: pulumi.Input<string | undefined>;
/**
* MariaDB instance that owns the volume.
*/
mariadbId?: pulumi.Input<string | undefined>;
/**
* MongoDB instance that owns the volume.
*/
mongoId?: pulumi.Input<string | undefined>;
/**
* MySQL instance that owns the volume.
*/
mysqlId?: pulumi.Input<string | undefined>;
/**
* Display name of the backup job.
*/
name?: pulumi.Input<string | undefined>;
/**
* PostgreSQL instance that owns the volume.
*/
postgresId?: pulumi.Input<string | undefined>;
/**
* Path prefix inside the destination bucket, for example `backups/shop/`.
*/
prefix?: pulumi.Input<string | undefined>;
/**
* Redis instance that owns the volume.
*/
redisId?: pulumi.Input<string | undefined>;
/**
* Service inside a Compose stack that owns the volume.
*/
serviceName?: pulumi.Input<string | undefined>;
/**
* The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
*/
serviceType?: pulumi.Input<string | undefined>;
/**
* Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
*/
turnOff?: pulumi.Input<boolean | undefined>;
/**
* Name of the Docker volume to back up.
*/
volumeName?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a VolumeBackup resource.
*/
export interface VolumeBackupArgs {
/**
* Docker service name that owns the volume. Derived by Dokploy when omitted.
*/
appName?: pulumi.Input<string | undefined>;
/**
* Application that owns the volume.
*/
applicationId?: pulumi.Input<string | undefined>;
/**
* Compose stack that owns the volume.
*/
composeId?: pulumi.Input<string | undefined>;
/**
* Standard five-field cron expression, for example `0 4 * * *`.
*/
cronExpression: pulumi.Input<string>;
/**
* Backup destination (S3-compatible bucket) to upload to.
*/
destinationId: pulumi.Input<string>;
/**
* Whether the backup schedule is active.
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* Number of backups to retain. Older ones are pruned.
*/
keepLatestCount?: pulumi.Input<number | undefined>;
/**
* libSQL instance that owns the volume.
*/
libsqlId?: pulumi.Input<string | undefined>;
/**
* MariaDB instance that owns the volume.
*/
mariadbId?: pulumi.Input<string | undefined>;
/**
* MongoDB instance that owns the volume.
*/
mongoId?: pulumi.Input<string | undefined>;
/**
* MySQL instance that owns the volume.
*/
mysqlId?: pulumi.Input<string | undefined>;
/**
* Display name of the backup job.
*/
name?: pulumi.Input<string | undefined>;
/**
* PostgreSQL instance that owns the volume.
*/
postgresId?: pulumi.Input<string | undefined>;
/**
* Path prefix inside the destination bucket, for example `backups/shop/`.
*/
prefix: pulumi.Input<string>;
/**
* Redis instance that owns the volume.
*/
redisId?: pulumi.Input<string | undefined>;
/**
* Service inside a Compose stack that owns the volume.
*/
serviceName?: pulumi.Input<string | undefined>;
/**
* The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`.
*/
serviceType?: pulumi.Input<string | undefined>;
/**
* Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
*/
turnOff?: pulumi.Input<boolean | undefined>;
/**
* Name of the Docker volume to back up.
*/
volumeName: pulumi.Input<string>;
}