@geekmidas/cli 10.0.0-alpha.88 → 10.0.0-alpha.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GoDaddyProvider--36rw8cP.mjs +387 -0
- package/dist/GoDaddyProvider--36rw8cP.mjs.map +1 -0
- package/dist/GoDaddyProvider-DnRor066.cjs +387 -0
- package/dist/GoDaddyProvider-DnRor066.cjs.map +1 -0
- package/dist/{HostingerProvider-CVc3rLPB.mjs → HostingerProvider-BI6J7oJr.mjs} +2 -2
- package/dist/{HostingerProvider-CVc3rLPB.mjs.map → HostingerProvider-BI6J7oJr.mjs.map} +1 -1
- package/dist/{HostingerProvider-BCB1QJj1.cjs → HostingerProvider-CyTpG_jy.cjs} +2 -2
- package/dist/{HostingerProvider-BCB1QJj1.cjs.map → HostingerProvider-CyTpG_jy.cjs.map} +1 -1
- package/dist/{LegacyStateStore-CWG_HVC0.cjs → LegacyStateStore-BaBoYl59.cjs} +2 -2
- package/dist/{LegacyStateStore-CWG_HVC0.cjs.map → LegacyStateStore-BaBoYl59.cjs.map} +1 -1
- package/dist/{LegacyStateStore-B0R4LlX_.mjs → LegacyStateStore-CO7bzJCU.mjs} +2 -2
- package/dist/{LegacyStateStore-B0R4LlX_.mjs.map → LegacyStateStore-CO7bzJCU.mjs.map} +1 -1
- package/dist/{LocalStateStore-CLwa2DpK.cjs → LocalStateStore-CUWh2BWU.cjs} +2 -2
- package/dist/{LocalStateStore-CLwa2DpK.cjs.map → LocalStateStore-CUWh2BWU.cjs.map} +1 -1
- package/dist/{LocalStateStore-Q4vXg2ua.mjs → LocalStateStore-C_hYDv6I.mjs} +2 -2
- package/dist/{LocalStateStore-Q4vXg2ua.mjs.map → LocalStateStore-C_hYDv6I.mjs.map} +1 -1
- package/dist/{S3StateStore-Cea9_5gF.cjs → S3StateStore-O8EYfjfG.cjs} +2 -2
- package/dist/{S3StateStore-Cea9_5gF.cjs.map → S3StateStore-O8EYfjfG.cjs.map} +1 -1
- package/dist/{S3StateStore-CksKYKRa.mjs → S3StateStore-hIm8Rrmu.mjs} +2 -2
- package/dist/{S3StateStore-CksKYKRa.mjs.map → S3StateStore-hIm8Rrmu.mjs.map} +1 -1
- package/dist/{SSMStateStore-aBOTF018.cjs → SSMStateStore-DIzbiqCz.cjs} +2 -2
- package/dist/{SSMStateStore-aBOTF018.cjs.map → SSMStateStore-DIzbiqCz.cjs.map} +1 -1
- package/dist/{SSMStateStore-BszSCAS2.mjs → SSMStateStore-IvcjTk8h.mjs} +2 -2
- package/dist/{SSMStateStore-BszSCAS2.mjs.map → SSMStateStore-IvcjTk8h.mjs.map} +1 -1
- package/dist/SubscriberGenerator-BPqQf8fB.mjs.map +1 -1
- package/dist/SubscriberGenerator-BVn7cQ-2.cjs.map +1 -1
- package/dist/{add-5MZAXybv.cjs → add-C9qX4Juc.cjs} +30 -7
- package/dist/add-C9qX4Juc.cjs.map +1 -0
- package/dist/{add-D_jNqnfZ.mjs → add-v3tCbrpE.mjs} +30 -7
- package/dist/add-v3tCbrpE.mjs.map +1 -0
- package/dist/{bundler-1REMhKps.cjs → bundler-C4NmpRTD.cjs} +5 -5
- package/dist/{bundler-1REMhKps.cjs.map → bundler-C4NmpRTD.cjs.map} +1 -1
- package/dist/{bundler-BMo-JP5s.mjs → bundler-C_fCgcVO.mjs} +5 -5
- package/dist/{bundler-BMo-JP5s.mjs.map → bundler-C_fCgcVO.mjs.map} +1 -1
- package/dist/{cli-BL8ZHsLQ.cjs → cli-C85Dut8K.cjs} +6 -5
- package/dist/cli-C85Dut8K.cjs.map +1 -0
- package/dist/{cli-7edNFwGk.mjs → cli-REdO9X5b.mjs} +7 -6
- package/dist/cli-REdO9X5b.mjs.map +1 -0
- package/dist/{compose-xw86kVYi.cjs → compose-BvrhDwJ6.cjs} +556 -30
- package/dist/compose-BvrhDwJ6.cjs.map +1 -0
- package/dist/{compose-DbJhRQlh.mjs → compose-Dn0oAgQ0.mjs} +509 -31
- package/dist/compose-Dn0oAgQ0.mjs.map +1 -0
- package/dist/{config-DrCAyoH5.d.mts → config-CdEcTrjG.d.mts} +3 -3
- package/dist/{config-CpjsVxru.d.cts.map → config-CdEcTrjG.d.mts.map} +1 -1
- package/dist/{config-CpjsVxru.d.cts → config-pST7E0CS.d.cts} +3 -3
- package/dist/{config-DrCAyoH5.d.mts.map → config-pST7E0CS.d.cts.map} +1 -1
- package/dist/config.cjs +1 -1
- package/dist/config.d.cts +3 -3
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs +1 -1
- package/dist/{credentials-tr26-KML.cjs → credentials-BKfIugu2.cjs} +47 -2
- package/dist/credentials-BKfIugu2.cjs.map +1 -0
- package/dist/{credentials-BgJ5mS_d.mjs → credentials-CnVqoXMb.mjs} +30 -3
- package/dist/credentials-CnVqoXMb.mjs.map +1 -0
- package/dist/deploy/public.cjs +10 -10
- package/dist/deploy/public.d.cts +9 -3
- package/dist/deploy/public.d.cts.map +1 -1
- package/dist/deploy/public.d.mts +9 -3
- package/dist/deploy/public.d.mts.map +1 -1
- package/dist/deploy/public.mjs +10 -10
- package/dist/{deploy-BTfmXd3g.mjs → deploy-BaERRh0Q.mjs} +10 -8
- package/dist/deploy-BaERRh0Q.mjs.map +1 -0
- package/dist/{deploy-CtbZj4zN.cjs → deploy-DbBGo3a6.cjs} +10 -8
- package/dist/deploy-DbBGo3a6.cjs.map +1 -0
- package/dist/{dokploy-r69yZaIt.mjs → dokploy-CMmD_ddX.mjs} +2 -2
- package/dist/{dokploy-r69yZaIt.mjs.map → dokploy-CMmD_ddX.mjs.map} +1 -1
- package/dist/{dokploy-TGk3oPwr.cjs → dokploy-DwAaKA9B.cjs} +2 -2
- package/dist/{dokploy-TGk3oPwr.cjs.map → dokploy-DwAaKA9B.cjs.map} +1 -1
- package/dist/{encryption-C-8Tt5Hh.mjs → encryption-BQmhq9_y.mjs} +3 -3
- package/dist/{encryption-C-8Tt5Hh.mjs.map → encryption-BQmhq9_y.mjs.map} +1 -1
- package/dist/{encryption-CDn7BH5O.cjs → encryption-BrN_9_CM.cjs} +3 -3
- package/dist/{encryption-CDn7BH5O.cjs.map → encryption-BrN_9_CM.cjs.map} +1 -1
- package/dist/{engine-jAINgiOB.mjs → engine-DILocOOH.mjs} +23 -404
- package/dist/engine-DILocOOH.mjs.map +1 -0
- package/dist/{engine-Bt5k_UMq.cjs → engine-DgHoFBMw.cjs} +25 -406
- package/dist/engine-DgHoFBMw.cjs.map +1 -0
- package/dist/{github-DFhuJQlp.cjs → github-Bf7pz6AV.cjs} +3 -3
- package/dist/{github-DFhuJQlp.cjs.map → github-Bf7pz6AV.cjs.map} +1 -1
- package/dist/{github-CZHAtwPT.mjs → github-xzg99wz8.mjs} +3 -3
- package/dist/{github-CZHAtwPT.mjs.map → github-xzg99wz8.mjs.map} +1 -1
- package/dist/{index-MnUJuUlj.d.mts → index-D-F_hTDz.d.cts} +21 -4
- package/dist/index-D-F_hTDz.d.cts.map +1 -0
- package/dist/{index-elsLJTUv.d.cts → index-YFNxR5Ns.d.mts} +21 -4
- package/dist/index-YFNxR5Ns.d.mts.map +1 -0
- package/dist/index.cjs +246 -63
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +247 -65
- package/dist/index.mjs.map +1 -1
- package/dist/{local-Cq8qdgNX.cjs → local-BjxDfPvy.cjs} +2 -2
- package/dist/{local-Cq8qdgNX.cjs.map → local-BjxDfPvy.cjs.map} +1 -1
- package/dist/{local-Ciq-bTPr.mjs → local-IuoIF3CT.mjs} +2 -2
- package/dist/{local-Ciq-bTPr.mjs.map → local-IuoIF3CT.mjs.map} +1 -1
- package/dist/{migrate-B1rVlwj1.cjs → migrate-7xayVtzL.cjs} +3 -3
- package/dist/{migrate-B1rVlwj1.cjs.map → migrate-7xayVtzL.cjs.map} +1 -1
- package/dist/{migrate-ggkPVJRC.mjs → migrate-CKLJ73OO.mjs} +4 -4
- package/dist/{migrate-ggkPVJRC.mjs.map → migrate-CKLJ73OO.mjs.map} +1 -1
- package/dist/{migrate-Dn7nK6sh.mjs → migrate-CpmO5qnl.mjs} +3 -3
- package/dist/{migrate-Dn7nK6sh.mjs.map → migrate-CpmO5qnl.mjs.map} +1 -1
- package/dist/{migrate-B16qgYTn.cjs → migrate-DPF7ZF8M.cjs} +3 -3
- package/dist/{migrate-B16qgYTn.cjs.map → migrate-DPF7ZF8M.cjs.map} +1 -1
- package/dist/openapi.cjs +1 -1
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/openapi.mjs +1 -1
- package/dist/reconcile/public.d.cts +1 -1
- package/dist/reconcile/public.d.mts +1 -1
- package/dist/{reconcile--I7V4Klj.mjs → reconcile-Dh1Jk7WE.mjs} +2 -2
- package/dist/{reconcile--I7V4Klj.mjs.map → reconcile-Dh1Jk7WE.mjs.map} +1 -1
- package/dist/{resolve-BSke45k6.mjs → resolve-Dv_weZoh.mjs} +4 -4
- package/dist/{resolve-BSke45k6.mjs.map → resolve-Dv_weZoh.mjs.map} +1 -1
- package/dist/{resolve-BXeXzpmU.cjs → resolve-dlKPFNgv.cjs} +4 -4
- package/dist/{resolve-BXeXzpmU.cjs.map → resolve-dlKPFNgv.cjs.map} +1 -1
- package/dist/{rollback-DFMiBWf0.cjs → rollback-65VVIdBM.cjs} +6 -6
- package/dist/{rollback-DFMiBWf0.cjs.map → rollback-65VVIdBM.cjs.map} +1 -1
- package/dist/{rollback-CEE6dse4.mjs → rollback-DpSU2DsD.mjs} +6 -6
- package/dist/{rollback-CEE6dse4.mjs.map → rollback-DpSU2DsD.mjs.map} +1 -1
- package/dist/{runtime-HabiNBtJ.d.mts → runtime-CN_kmqxo.d.cts} +2 -2
- package/dist/{runtime-D48ZKk8_.d.cts.map → runtime-CN_kmqxo.d.cts.map} +1 -1
- package/dist/{runtime-D48ZKk8_.d.cts → runtime-Cjvon3oj.d.mts} +2 -2
- package/dist/{runtime-HabiNBtJ.d.mts.map → runtime-Cjvon3oj.d.mts.map} +1 -1
- package/dist/{seeds-CsI0A_Ef.cjs → seeds-CN6tB-va.cjs} +646 -187
- package/dist/{seeds-CsI0A_Ef.cjs.map → seeds-CN6tB-va.cjs.map} +1 -1
- package/dist/{seeds-BYdrtZsC.mjs → seeds-perzdN81.mjs} +599 -164
- package/dist/seeds-perzdN81.mjs.map +1 -0
- package/dist/{sniffer-B0EU73bj.mjs → sniffer-BTtX3NUM.mjs} +3 -3
- package/dist/{sniffer-B0EU73bj.mjs.map → sniffer-BTtX3NUM.mjs.map} +1 -1
- package/dist/{sniffer-DJYupBeK.cjs → sniffer-IAQEpsQb.cjs} +3 -3
- package/dist/{sniffer-DJYupBeK.cjs.map → sniffer-IAQEpsQb.cjs.map} +1 -1
- package/dist/{sst-DAqUoZKG.cjs → sst-BgcOsaBi.cjs} +3 -3
- package/dist/{sst-DAqUoZKG.cjs.map → sst-BgcOsaBi.cjs.map} +1 -1
- package/dist/{sst-D1Qj4sIs.mjs → sst-CJzvyrEz.mjs} +3 -3
- package/dist/{sst-D1Qj4sIs.mjs.map → sst-CJzvyrEz.mjs.map} +1 -1
- package/dist/{stages-Brn3vcdy.cjs → stages-CUn6gvXL.cjs} +2 -2
- package/dist/{stages-Brn3vcdy.cjs.map → stages-CUn6gvXL.cjs.map} +1 -1
- package/dist/{stages-DoHHz6pS.mjs → stages-CnZRYmkI.mjs} +2 -2
- package/dist/{stages-DoHHz6pS.mjs.map → stages-CnZRYmkI.mjs.map} +1 -1
- package/dist/target/public.cjs +1 -1
- package/dist/target/public.d.cts +2 -2
- package/dist/target/public.d.mts +2 -2
- package/dist/target/public.mjs +1 -1
- package/dist/{terminal-BTbZlrFV.mjs → terminal-D8TPK7o9.mjs} +3 -3
- package/dist/{terminal-BTbZlrFV.mjs.map → terminal-D8TPK7o9.mjs.map} +1 -1
- package/dist/{terminal-COv23heb.cjs → terminal-DuapRxh6.cjs} +2 -2
- package/dist/{terminal-COv23heb.cjs.map → terminal-DuapRxh6.cjs.map} +1 -1
- package/dist/{types-0oAyFOfR.d.cts → types-NqX1Hz4P.d.cts} +210 -205
- package/dist/types-NqX1Hz4P.d.cts.map +1 -0
- package/dist/{types-BZ01tZs-.d.mts → types-ZHuZ89hv.d.mts} +210 -205
- package/dist/types-ZHuZ89hv.d.mts.map +1 -0
- package/dist/workspace/index.cjs +3 -1
- package/dist/workspace/index.d.cts +3 -3
- package/dist/workspace/index.d.mts +3 -3
- package/dist/workspace/index.mjs +2 -2
- package/dist/{workspace-D2CYLMCW.mjs → workspace-CJ0lKFq-.mjs} +231 -10
- package/dist/workspace-CJ0lKFq-.mjs.map +1 -0
- package/dist/{workspace-CT0JM3Y8.cjs → workspace-CwW3Gkru.cjs} +266 -9
- package/dist/workspace-CwW3Gkru.cjs.map +1 -0
- package/package.json +15 -15
- package/dist/add-5MZAXybv.cjs.map +0 -1
- package/dist/add-D_jNqnfZ.mjs.map +0 -1
- package/dist/cli-7edNFwGk.mjs.map +0 -1
- package/dist/cli-BL8ZHsLQ.cjs.map +0 -1
- package/dist/compose-DbJhRQlh.mjs.map +0 -1
- package/dist/compose-xw86kVYi.cjs.map +0 -1
- package/dist/credentials-BgJ5mS_d.mjs.map +0 -1
- package/dist/credentials-tr26-KML.cjs.map +0 -1
- package/dist/deploy-BTfmXd3g.mjs.map +0 -1
- package/dist/deploy-CtbZj4zN.cjs.map +0 -1
- package/dist/engine-Bt5k_UMq.cjs.map +0 -1
- package/dist/engine-jAINgiOB.mjs.map +0 -1
- package/dist/index-MnUJuUlj.d.mts.map +0 -1
- package/dist/index-elsLJTUv.d.cts.map +0 -1
- package/dist/seeds-BYdrtZsC.mjs.map +0 -1
- package/dist/types-0oAyFOfR.d.cts.map +0 -1
- package/dist/types-BZ01tZs-.d.mts.map +0 -1
- package/dist/workspace-CT0JM3Y8.cjs.map +0 -1
- package/dist/workspace-D2CYLMCW.mjs.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const require_credentials = require("./credentials-
|
|
1
|
+
const require_credentials = require("./credentials-BKfIugu2.cjs");
|
|
2
2
|
const require_schemas = require("./schemas-BObwxB_t.cjs");
|
|
3
3
|
const require_discover = require("./discover-D1It5r_h.cjs");
|
|
4
4
|
const require_sandbox = require("./sandbox-CL--ZDui.cjs");
|
|
5
5
|
const require_derive = require("./derive-DAbo49sm.cjs");
|
|
6
|
-
const require_workspace = require("./workspace-
|
|
7
|
-
const require_seeds = require("./seeds-
|
|
8
|
-
const require_local = require("./local-
|
|
9
|
-
const require_sniffer = require("./sniffer-
|
|
6
|
+
const require_workspace = require("./workspace-CwW3Gkru.cjs");
|
|
7
|
+
const require_seeds = require("./seeds-CN6tB-va.cjs");
|
|
8
|
+
const require_local = require("./local-BjxDfPvy.cjs");
|
|
9
|
+
const require_sniffer = require("./sniffer-IAQEpsQb.cjs");
|
|
10
10
|
const require_databases = require("./databases-BY-pEImp.cjs");
|
|
11
11
|
const require_credentialSchemas = require("./credentialSchemas-DCR4Wd1W.cjs");
|
|
12
12
|
let node_path = require("node:path");
|
|
@@ -17,9 +17,8 @@ let node_crypto = require("node:crypto");
|
|
|
17
17
|
let _geekmidas_db_pg_roles = require("@geekmidas/db/pg/roles");
|
|
18
18
|
let pg = require("pg");
|
|
19
19
|
let _geekmidas_cache_postgres = require("@geekmidas/cache/postgres");
|
|
20
|
-
let node_dns_promises = require("node:dns/promises");
|
|
21
20
|
//#region src/deploy/docker.ts
|
|
22
|
-
const logger$
|
|
21
|
+
const logger$2 = require_discover.output;
|
|
23
22
|
/**
|
|
24
23
|
* The id the Dockerfile templates mount the encrypted credentials under:
|
|
25
24
|
* `RUN --mount=type=secret,id=gkm_credentials`.
|
|
@@ -95,8 +94,8 @@ async function writeCredentialsFile(credentials) {
|
|
|
95
94
|
* @param credentials - Encrypted credentials, passed as a build secret
|
|
96
95
|
*/
|
|
97
96
|
async function buildImage(imageRef, buildArgs, credentials, { cwd, dockerfile, signal, stdio, stage }) {
|
|
98
|
-
logger$
|
|
99
|
-
logger$
|
|
97
|
+
logger$2.log(`\n🔨 Building Docker image: ${imageRef}`);
|
|
98
|
+
logger$2.log(" Generating Dockerfile...");
|
|
100
99
|
const { buildRoot } = await require_seeds.dockerCommand({
|
|
101
100
|
cwd,
|
|
102
101
|
...stage ? { stage } : {}
|
|
@@ -118,7 +117,7 @@ async function buildImage(imageRef, buildArgs, credentials, { cwd, dockerfile, s
|
|
|
118
117
|
...signal ? { signal } : {},
|
|
119
118
|
...stdio ? { stdio } : {}
|
|
120
119
|
});
|
|
121
|
-
logger$
|
|
120
|
+
logger$2.log(`✅ Image built: ${imageRef}`);
|
|
122
121
|
} catch (error) {
|
|
123
122
|
throw new require_seeds.DockerBuildFailed(imageRef, error);
|
|
124
123
|
} finally {
|
|
@@ -129,14 +128,14 @@ async function buildImage(imageRef, buildArgs, credentials, { cwd, dockerfile, s
|
|
|
129
128
|
* Push Docker image to registry
|
|
130
129
|
*/
|
|
131
130
|
async function pushImage(imageRef, { cwd, signal, stdio }) {
|
|
132
|
-
logger$
|
|
131
|
+
logger$2.log(`\n☁️ Pushing image: ${imageRef}`);
|
|
133
132
|
try {
|
|
134
133
|
await require_credentials.run("docker", ["push", imageRef], {
|
|
135
134
|
cwd,
|
|
136
135
|
...signal ? { signal } : {},
|
|
137
136
|
...stdio ? { stdio } : {}
|
|
138
137
|
});
|
|
139
|
-
logger$
|
|
138
|
+
logger$2.log(`✅ Image pushed: ${imageRef}`);
|
|
140
139
|
} catch (error) {
|
|
141
140
|
throw new require_seeds.DockerPushFailed(imageRef, error);
|
|
142
141
|
}
|
|
@@ -189,17 +188,17 @@ async function deployDocker(options) {
|
|
|
189
188
|
await buildImage(imageRef, buildArgs, credentials, docker);
|
|
190
189
|
let digest;
|
|
191
190
|
if (!skipPush) {
|
|
192
|
-
if (!config.registry) logger$
|
|
191
|
+
if (!config.registry) logger$2.warn("\n⚠️ No registry configured. Use --skip-push or configure docker.registry in gkm.config.ts");
|
|
193
192
|
else {
|
|
194
193
|
await pushImage(imageRef, docker);
|
|
195
194
|
digest = await pushedDigest(imageRef, docker);
|
|
196
195
|
}
|
|
197
196
|
}
|
|
198
|
-
logger$
|
|
199
|
-
logger$
|
|
200
|
-
logger$
|
|
201
|
-
logger$
|
|
202
|
-
if (masterKey) logger$
|
|
197
|
+
logger$2.log("\n✅ Docker deployment ready!");
|
|
198
|
+
logger$2.log(`\n📋 Deployment details:`);
|
|
199
|
+
logger$2.log(` Image: ${imageRef}`);
|
|
200
|
+
logger$2.log(` Stage: ${stage}`);
|
|
201
|
+
if (masterKey) logger$2.log(`\n🔐 Run the container with GKM_MASTER_KEY set to the key with fingerprint ${require_sniffer.keyFingerprint(masterKey)}.`);
|
|
203
202
|
return {
|
|
204
203
|
imageRef,
|
|
205
204
|
...digest ? { digest } : {},
|
|
@@ -1286,7 +1285,7 @@ async function provisionDeclared(options) {
|
|
|
1286
1285
|
events: require_seeds.eventsBackendFor(require_seeds.providerOf(workspace)),
|
|
1287
1286
|
storage: require_seeds.storageBackendFor(require_seeds.providerOf(workspace)),
|
|
1288
1287
|
...options.devServices ? { devServices: options.devServices } : {},
|
|
1289
|
-
...workspace.
|
|
1288
|
+
...workspace.domains?.[options.stage] ? { domain: workspace.domains[options.stage] } : {},
|
|
1290
1289
|
addresses: surfaceAddresses(manifest, options.appUrls),
|
|
1291
1290
|
seed: options.seed,
|
|
1292
1291
|
...options.supplied ? { supplied: options.supplied } : {},
|
|
@@ -1366,387 +1365,6 @@ function surfaceAddresses(manifest, appUrls) {
|
|
|
1366
1365
|
return addresses;
|
|
1367
1366
|
}
|
|
1368
1367
|
//#endregion
|
|
1369
|
-
//#region src/target/dokploy/dns/DnsProvider.ts
|
|
1370
|
-
/**
|
|
1371
|
-
* Check if value is a DnsProvider implementation.
|
|
1372
|
-
*/
|
|
1373
|
-
function isDnsProvider(value) {
|
|
1374
|
-
return typeof value === "object" && value !== null && typeof value.name === "string" && typeof value.getRecords === "function" && typeof value.upsertRecords === "function" && typeof value.deleteRecords === "function";
|
|
1375
|
-
}
|
|
1376
|
-
/**
|
|
1377
|
-
* Create a DNS provider based on configuration.
|
|
1378
|
-
*
|
|
1379
|
-
* - 'hostinger': HostingerProvider
|
|
1380
|
-
* - 'route53': Route53Provider
|
|
1381
|
-
* - 'manual': Returns null (user handles DNS)
|
|
1382
|
-
* - Custom: Use provided DnsProvider implementation
|
|
1383
|
-
*/
|
|
1384
|
-
async function createDnsProvider(options) {
|
|
1385
|
-
const { config } = options;
|
|
1386
|
-
if (config.provider === "manual") return null;
|
|
1387
|
-
if (isDnsProvider(config.provider)) return config.provider;
|
|
1388
|
-
const provider = config.provider;
|
|
1389
|
-
if (provider === "hostinger") {
|
|
1390
|
-
const { HostingerProvider } = await Promise.resolve().then(() => require("./HostingerProvider-BCB1QJj1.cjs"));
|
|
1391
|
-
return new HostingerProvider();
|
|
1392
|
-
}
|
|
1393
|
-
if (provider === "route53") {
|
|
1394
|
-
const { Route53Provider } = await Promise.resolve().then(() => require("./Route53Provider-Bllus2NR.cjs"));
|
|
1395
|
-
const route53Config = config;
|
|
1396
|
-
return new Route53Provider({
|
|
1397
|
-
region: route53Config.region,
|
|
1398
|
-
profile: route53Config.profile,
|
|
1399
|
-
hostedZoneId: route53Config.hostedZoneId
|
|
1400
|
-
});
|
|
1401
|
-
}
|
|
1402
|
-
if (provider === "cloudflare") throw new Error("Cloudflare DNS provider not yet implemented");
|
|
1403
|
-
throw new Error(`Unknown DNS provider: ${JSON.stringify(config)}`);
|
|
1404
|
-
}
|
|
1405
|
-
//#endregion
|
|
1406
|
-
//#region src/target/dokploy/dns/index.ts
|
|
1407
|
-
/**
|
|
1408
|
-
* DNS orchestration for deployments
|
|
1409
|
-
*
|
|
1410
|
-
* Handles automatic DNS record creation for deployed applications.
|
|
1411
|
-
*/
|
|
1412
|
-
const logger$2 = require_discover.output;
|
|
1413
|
-
/**
|
|
1414
|
-
* Check if DNS config is legacy format (single domain with `domain` property)
|
|
1415
|
-
*/
|
|
1416
|
-
function isLegacyDnsConfig(config) {
|
|
1417
|
-
return typeof config === "object" && config !== null && "provider" in config && "domain" in config;
|
|
1418
|
-
}
|
|
1419
|
-
/**
|
|
1420
|
-
* Normalize DNS config to new multi-domain format
|
|
1421
|
-
*/
|
|
1422
|
-
function normalizeDnsConfig(config) {
|
|
1423
|
-
if (isLegacyDnsConfig(config)) {
|
|
1424
|
-
const { domain, ...providerConfig } = config;
|
|
1425
|
-
return { [domain]: providerConfig };
|
|
1426
|
-
}
|
|
1427
|
-
return config;
|
|
1428
|
-
}
|
|
1429
|
-
/**
|
|
1430
|
-
* Find the root domain for a hostname from available DNS configs
|
|
1431
|
-
*
|
|
1432
|
-
* @example
|
|
1433
|
-
* findRootDomain('api.geekmidas.com', { 'geekmidas.com': {...}, 'geekmidas.dev': {...} })
|
|
1434
|
-
* // Returns 'geekmidas.com'
|
|
1435
|
-
*/
|
|
1436
|
-
function findRootDomain(hostname, dnsConfig) {
|
|
1437
|
-
const domains = Object.keys(dnsConfig).sort((a, b) => b.length - a.length);
|
|
1438
|
-
for (const domain of domains) if (hostname === domain || hostname.endsWith(`.${domain}`)) return domain;
|
|
1439
|
-
return null;
|
|
1440
|
-
}
|
|
1441
|
-
/**
|
|
1442
|
-
* Group hostnames by their root domain
|
|
1443
|
-
*/
|
|
1444
|
-
function groupHostnamesByDomain(appHostnames, dnsConfig) {
|
|
1445
|
-
const grouped = /* @__PURE__ */ new Map();
|
|
1446
|
-
for (const [appName, hostname] of appHostnames) {
|
|
1447
|
-
const rootDomain = findRootDomain(hostname, dnsConfig);
|
|
1448
|
-
if (!rootDomain) {
|
|
1449
|
-
logger$2.log(` ⚠ No DNS config found for hostname: ${hostname}`);
|
|
1450
|
-
continue;
|
|
1451
|
-
}
|
|
1452
|
-
if (!grouped.has(rootDomain)) grouped.set(rootDomain, /* @__PURE__ */ new Map());
|
|
1453
|
-
grouped.get(rootDomain).set(appName, hostname);
|
|
1454
|
-
}
|
|
1455
|
-
return grouped;
|
|
1456
|
-
}
|
|
1457
|
-
/**
|
|
1458
|
-
* Resolve IP address from a hostname
|
|
1459
|
-
*/
|
|
1460
|
-
async function resolveHostnameToIp(hostname) {
|
|
1461
|
-
try {
|
|
1462
|
-
return (await (0, node_dns_promises.lookup)(hostname, { family: 4 })).address;
|
|
1463
|
-
} catch (error) {
|
|
1464
|
-
throw new Error(`Failed to resolve IP for ${hostname}: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
1465
|
-
}
|
|
1466
|
-
}
|
|
1467
|
-
/**
|
|
1468
|
-
* Extract subdomain from full hostname relative to root domain
|
|
1469
|
-
*
|
|
1470
|
-
* @example
|
|
1471
|
-
* extractSubdomain('api.joemoer.traflabs.io', 'traflabs.io') => 'api.joemoer'
|
|
1472
|
-
* extractSubdomain('joemoer.traflabs.io', 'traflabs.io') => 'joemoer'
|
|
1473
|
-
*/
|
|
1474
|
-
function extractSubdomain(hostname, rootDomain) {
|
|
1475
|
-
if (!hostname.endsWith(rootDomain)) throw new Error(`Hostname ${hostname} is not under root domain ${rootDomain}`);
|
|
1476
|
-
return hostname.slice(0, -(rootDomain.length + 1)) || "@";
|
|
1477
|
-
}
|
|
1478
|
-
/**
|
|
1479
|
-
* Generate required DNS records for a deployment
|
|
1480
|
-
*/
|
|
1481
|
-
function generateRequiredRecords(appHostnames, rootDomain, serverIp) {
|
|
1482
|
-
const records = [];
|
|
1483
|
-
for (const [appName, hostname] of appHostnames) {
|
|
1484
|
-
const subdomain = extractSubdomain(hostname, rootDomain);
|
|
1485
|
-
records.push({
|
|
1486
|
-
hostname,
|
|
1487
|
-
subdomain,
|
|
1488
|
-
type: "A",
|
|
1489
|
-
value: serverIp,
|
|
1490
|
-
appName
|
|
1491
|
-
});
|
|
1492
|
-
}
|
|
1493
|
-
return records;
|
|
1494
|
-
}
|
|
1495
|
-
/**
|
|
1496
|
-
* Print DNS records table
|
|
1497
|
-
*/
|
|
1498
|
-
function printDnsRecordsTable(records, rootDomain) {
|
|
1499
|
-
logger$2.log(`\n 📋 DNS Records for ${rootDomain}:`);
|
|
1500
|
-
logger$2.log(" ┌─────────────────────────────────────┬──────┬─────────────────┬────────┐");
|
|
1501
|
-
logger$2.log(" │ Subdomain │ Type │ Value │ Status │");
|
|
1502
|
-
logger$2.log(" ├─────────────────────────────────────┼──────┼─────────────────┼────────┤");
|
|
1503
|
-
for (const record of records) {
|
|
1504
|
-
const subdomain = record.subdomain.padEnd(35);
|
|
1505
|
-
const type = record.type.padEnd(4);
|
|
1506
|
-
const value = record.value.padEnd(15);
|
|
1507
|
-
let status;
|
|
1508
|
-
if (record.error) status = "✗";
|
|
1509
|
-
else if (record.created) status = "✓ new";
|
|
1510
|
-
else if (record.existed) status = "✓";
|
|
1511
|
-
else status = "?";
|
|
1512
|
-
logger$2.log(` │ ${subdomain} │ ${type} │ ${value} │ ${status.padEnd(6)} │`);
|
|
1513
|
-
}
|
|
1514
|
-
logger$2.log(" └─────────────────────────────────────┴──────┴─────────────────┴────────┘");
|
|
1515
|
-
}
|
|
1516
|
-
/**
|
|
1517
|
-
* Print DNS records in a simple format for manual setup
|
|
1518
|
-
*/
|
|
1519
|
-
function printDnsRecordsSimple(records, rootDomain) {
|
|
1520
|
-
logger$2.log("\n 📋 Required DNS Records:");
|
|
1521
|
-
logger$2.log(` Add these A records to your DNS provider (${rootDomain}):\n`);
|
|
1522
|
-
for (const record of records) logger$2.log(` ${record.subdomain} → ${record.value} (A record)`);
|
|
1523
|
-
logger$2.log("");
|
|
1524
|
-
}
|
|
1525
|
-
/**
|
|
1526
|
-
* Create DNS records for a single domain using its configured provider
|
|
1527
|
-
*/
|
|
1528
|
-
async function createDnsRecordsForDomain(records, rootDomain, providerConfig) {
|
|
1529
|
-
const ttl = "ttl" in providerConfig && providerConfig.ttl ? providerConfig.ttl : 300;
|
|
1530
|
-
let provider;
|
|
1531
|
-
try {
|
|
1532
|
-
provider = await createDnsProvider({ config: providerConfig });
|
|
1533
|
-
} catch (error) {
|
|
1534
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
1535
|
-
logger$2.log(` ⚠ Failed to create DNS provider for ${rootDomain}: ${message}`);
|
|
1536
|
-
return records.map((r) => ({
|
|
1537
|
-
...r,
|
|
1538
|
-
error: message
|
|
1539
|
-
}));
|
|
1540
|
-
}
|
|
1541
|
-
if (!provider) return records.map((r) => ({
|
|
1542
|
-
...r,
|
|
1543
|
-
created: false,
|
|
1544
|
-
existed: false
|
|
1545
|
-
}));
|
|
1546
|
-
const results = [];
|
|
1547
|
-
const upsertRecords = records.map((r) => ({
|
|
1548
|
-
name: r.subdomain,
|
|
1549
|
-
type: r.type,
|
|
1550
|
-
ttl,
|
|
1551
|
-
value: r.value
|
|
1552
|
-
}));
|
|
1553
|
-
try {
|
|
1554
|
-
const upsertResults = await provider.upsertRecords(rootDomain, upsertRecords);
|
|
1555
|
-
for (const [i, record] of records.entries()) {
|
|
1556
|
-
const result = upsertResults[i];
|
|
1557
|
-
if (!result) {
|
|
1558
|
-
results.push({
|
|
1559
|
-
hostname: record.hostname,
|
|
1560
|
-
subdomain: record.subdomain,
|
|
1561
|
-
type: record.type,
|
|
1562
|
-
value: record.value,
|
|
1563
|
-
appName: record.appName,
|
|
1564
|
-
error: "No result returned from provider"
|
|
1565
|
-
});
|
|
1566
|
-
continue;
|
|
1567
|
-
}
|
|
1568
|
-
if (result.unchanged) results.push({
|
|
1569
|
-
hostname: record.hostname,
|
|
1570
|
-
subdomain: record.subdomain,
|
|
1571
|
-
type: record.type,
|
|
1572
|
-
value: record.value,
|
|
1573
|
-
appName: record.appName,
|
|
1574
|
-
existed: true,
|
|
1575
|
-
created: false
|
|
1576
|
-
});
|
|
1577
|
-
else results.push({
|
|
1578
|
-
hostname: record.hostname,
|
|
1579
|
-
subdomain: record.subdomain,
|
|
1580
|
-
type: record.type,
|
|
1581
|
-
value: record.value,
|
|
1582
|
-
appName: record.appName,
|
|
1583
|
-
created: result.created,
|
|
1584
|
-
existed: !result.created
|
|
1585
|
-
});
|
|
1586
|
-
}
|
|
1587
|
-
} catch (error) {
|
|
1588
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
1589
|
-
logger$2.log(` ⚠ Failed to create DNS records for ${rootDomain}: ${message}`);
|
|
1590
|
-
return records.map((r) => ({
|
|
1591
|
-
hostname: r.hostname,
|
|
1592
|
-
subdomain: r.subdomain,
|
|
1593
|
-
type: r.type,
|
|
1594
|
-
value: r.value,
|
|
1595
|
-
appName: r.appName,
|
|
1596
|
-
error: message
|
|
1597
|
-
}));
|
|
1598
|
-
}
|
|
1599
|
-
return results;
|
|
1600
|
-
}
|
|
1601
|
-
/**
|
|
1602
|
-
* Main DNS orchestration function for deployments
|
|
1603
|
-
*
|
|
1604
|
-
* Supports both legacy single-domain format and new multi-domain format:
|
|
1605
|
-
* - Legacy: { provider: 'hostinger', domain: 'example.com' }
|
|
1606
|
-
* - Multi: { 'example.com': { provider: 'hostinger' }, 'example.dev': { provider: 'route53' } }
|
|
1607
|
-
*
|
|
1608
|
-
* @param appHostnames - Map of app names to hostnames
|
|
1609
|
-
* @param dnsConfig - DNS configuration (legacy or multi-domain)
|
|
1610
|
-
* @param dokployEndpoint - Dokploy server endpoint to resolve IP from
|
|
1611
|
-
* @param state - Optional state to save created records for later deletion
|
|
1612
|
-
*/
|
|
1613
|
-
async function orchestrateDns(appHostnames, dnsConfig, dokployEndpoint, state) {
|
|
1614
|
-
if (!dnsConfig) return null;
|
|
1615
|
-
const normalizedConfig = normalizeDnsConfig(dnsConfig);
|
|
1616
|
-
logger$2.log("\n🌐 Setting up DNS records...");
|
|
1617
|
-
let serverIp;
|
|
1618
|
-
try {
|
|
1619
|
-
const endpointUrl = new URL(dokployEndpoint);
|
|
1620
|
-
serverIp = await resolveHostnameToIp(endpointUrl.hostname);
|
|
1621
|
-
logger$2.log(` Server IP: ${serverIp} (from ${endpointUrl.hostname})`);
|
|
1622
|
-
} catch (error) {
|
|
1623
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
1624
|
-
logger$2.log(` ⚠ Failed to resolve server IP: ${message}`);
|
|
1625
|
-
return null;
|
|
1626
|
-
}
|
|
1627
|
-
const groupedHostnames = groupHostnamesByDomain(appHostnames, normalizedConfig);
|
|
1628
|
-
if (groupedHostnames.size === 0) {
|
|
1629
|
-
logger$2.log(" No DNS records needed (no hostnames match configured domains)");
|
|
1630
|
-
return {
|
|
1631
|
-
records: [],
|
|
1632
|
-
success: true,
|
|
1633
|
-
serverIp
|
|
1634
|
-
};
|
|
1635
|
-
}
|
|
1636
|
-
const allRecords = [];
|
|
1637
|
-
let hasFailures = false;
|
|
1638
|
-
for (const [rootDomain, domainHostnames] of groupedHostnames) {
|
|
1639
|
-
const providerConfig = normalizedConfig[rootDomain];
|
|
1640
|
-
if (!providerConfig) {
|
|
1641
|
-
logger$2.log(` ⚠ No provider config for ${rootDomain}`);
|
|
1642
|
-
continue;
|
|
1643
|
-
}
|
|
1644
|
-
const providerName = typeof providerConfig.provider === "string" ? providerConfig.provider : "custom";
|
|
1645
|
-
const requiredRecords = generateRequiredRecords(domainHostnames, rootDomain, serverIp);
|
|
1646
|
-
if (requiredRecords.length === 0) continue;
|
|
1647
|
-
logger$2.log(` Creating DNS records for ${rootDomain} (${providerName})...`);
|
|
1648
|
-
const domainRecords = await createDnsRecordsForDomain(requiredRecords, rootDomain, providerConfig);
|
|
1649
|
-
allRecords.push(...domainRecords);
|
|
1650
|
-
const created = domainRecords.filter((r) => r.created).length;
|
|
1651
|
-
const existed = domainRecords.filter((r) => r.existed).length;
|
|
1652
|
-
const failed = domainRecords.filter((r) => r.error).length;
|
|
1653
|
-
if (created > 0) logger$2.log(` ✓ Created ${created} DNS record(s) for ${rootDomain}`);
|
|
1654
|
-
if (existed > 0) logger$2.log(` ✓ ${existed} record(s) already exist for ${rootDomain}`);
|
|
1655
|
-
if (failed > 0) {
|
|
1656
|
-
logger$2.log(` ⚠ ${failed} record(s) failed for ${rootDomain}`);
|
|
1657
|
-
hasFailures = true;
|
|
1658
|
-
}
|
|
1659
|
-
if (state) {
|
|
1660
|
-
for (const record of domainRecords) if (record.created || record.existed) require_seeds.setDnsRecord(state, {
|
|
1661
|
-
domain: rootDomain,
|
|
1662
|
-
name: record.subdomain,
|
|
1663
|
-
type: record.type,
|
|
1664
|
-
value: record.value,
|
|
1665
|
-
ttl: "ttl" in providerConfig && providerConfig.ttl ? providerConfig.ttl : 300
|
|
1666
|
-
});
|
|
1667
|
-
}
|
|
1668
|
-
printDnsRecordsTable(domainRecords, rootDomain);
|
|
1669
|
-
if (providerConfig.provider === "manual" || failed > 0) printDnsRecordsSimple(domainRecords.filter((r) => !r.created && !r.existed), rootDomain);
|
|
1670
|
-
}
|
|
1671
|
-
return {
|
|
1672
|
-
records: allRecords,
|
|
1673
|
-
success: !hasFailures,
|
|
1674
|
-
serverIp
|
|
1675
|
-
};
|
|
1676
|
-
}
|
|
1677
|
-
/**
|
|
1678
|
-
* Verify DNS records resolve correctly after deployment.
|
|
1679
|
-
*
|
|
1680
|
-
* This function:
|
|
1681
|
-
* 1. Checks state for previously verified hostnames (skips if already verified with same IP)
|
|
1682
|
-
* 2. Attempts to resolve each hostname to an IP
|
|
1683
|
-
* 3. Compares resolved IP with expected server IP
|
|
1684
|
-
* 4. Updates state with verification results
|
|
1685
|
-
*
|
|
1686
|
-
* @param appHostnames - Map of app names to hostnames
|
|
1687
|
-
* @param serverIp - Expected IP address the hostnames should resolve to
|
|
1688
|
-
* @param state - Deploy state for caching verification results
|
|
1689
|
-
* @returns Array of verification results
|
|
1690
|
-
*/
|
|
1691
|
-
async function verifyDnsRecords(appHostnames, serverIp, state) {
|
|
1692
|
-
const results = [];
|
|
1693
|
-
logger$2.log("\n🔍 Verifying DNS records...");
|
|
1694
|
-
for (const [appName, hostname] of appHostnames) {
|
|
1695
|
-
if (require_seeds.isDnsVerified(state, hostname, serverIp)) {
|
|
1696
|
-
logger$2.log(` ✓ ${hostname} (previously verified)`);
|
|
1697
|
-
results.push({
|
|
1698
|
-
hostname,
|
|
1699
|
-
appName,
|
|
1700
|
-
verified: true,
|
|
1701
|
-
expectedIp: serverIp,
|
|
1702
|
-
skipped: true
|
|
1703
|
-
});
|
|
1704
|
-
continue;
|
|
1705
|
-
}
|
|
1706
|
-
try {
|
|
1707
|
-
const resolvedIp = await resolveHostnameToIp(hostname);
|
|
1708
|
-
if (resolvedIp === serverIp) {
|
|
1709
|
-
require_seeds.setDnsVerification(state, hostname, serverIp);
|
|
1710
|
-
logger$2.log(` ✓ ${hostname} → ${resolvedIp}`);
|
|
1711
|
-
results.push({
|
|
1712
|
-
hostname,
|
|
1713
|
-
appName,
|
|
1714
|
-
verified: true,
|
|
1715
|
-
resolvedIp,
|
|
1716
|
-
expectedIp: serverIp
|
|
1717
|
-
});
|
|
1718
|
-
} else {
|
|
1719
|
-
logger$2.log(` ⚠ ${hostname} resolves to ${resolvedIp}, expected ${serverIp}`);
|
|
1720
|
-
results.push({
|
|
1721
|
-
hostname,
|
|
1722
|
-
appName,
|
|
1723
|
-
verified: false,
|
|
1724
|
-
resolvedIp,
|
|
1725
|
-
expectedIp: serverIp
|
|
1726
|
-
});
|
|
1727
|
-
}
|
|
1728
|
-
} catch (error) {
|
|
1729
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
1730
|
-
logger$2.log(` ⚠ ${hostname} DNS not propagated (${message})`);
|
|
1731
|
-
results.push({
|
|
1732
|
-
hostname,
|
|
1733
|
-
appName,
|
|
1734
|
-
verified: false,
|
|
1735
|
-
expectedIp: serverIp,
|
|
1736
|
-
error: message
|
|
1737
|
-
});
|
|
1738
|
-
}
|
|
1739
|
-
}
|
|
1740
|
-
const verified = results.filter((r) => r.verified).length;
|
|
1741
|
-
const skipped = results.filter((r) => r.skipped).length;
|
|
1742
|
-
const pending = results.filter((r) => !r.verified).length;
|
|
1743
|
-
if (pending > 0) {
|
|
1744
|
-
logger$2.log(`\n ${verified} verified, ${pending} pending propagation`);
|
|
1745
|
-
logger$2.log(" DNS changes may take 5-30 minutes to propagate");
|
|
1746
|
-
} else if (skipped > 0) logger$2.log(` ${verified} verified (${skipped} from cache)`);
|
|
1747
|
-
return results;
|
|
1748
|
-
}
|
|
1749
|
-
//#endregion
|
|
1750
1368
|
//#region src/target/dokploy/env-resolver.ts
|
|
1751
1369
|
/**
|
|
1752
1370
|
* Environment Variable Resolution for Dokploy Deployments
|
|
@@ -1777,6 +1395,7 @@ function getOrGenerateSecret(state, appName, secretName) {
|
|
|
1777
1395
|
* Resolve a single environment variable
|
|
1778
1396
|
*/
|
|
1779
1397
|
function resolveEnvVar(varName, context) {
|
|
1398
|
+
if (require_workspace.isReservedStageKey(varName)) return void 0;
|
|
1780
1399
|
switch (varName) {
|
|
1781
1400
|
case "PORT": return String(context.app.port);
|
|
1782
1401
|
case "NODE_ENV": return "production";
|
|
@@ -2305,7 +1924,7 @@ async function validateDokploy(phase) {
|
|
|
2305
1924
|
declarations: require_seeds.manifestServiceDeclarations(phase.manifest),
|
|
2306
1925
|
supplied: stored?.custom ?? {},
|
|
2307
1926
|
allow: phase.allowDevServices,
|
|
2308
|
-
...workspace.
|
|
1927
|
+
...workspace.domains?.[stage] ? { domain: workspace.domains[stage] } : {},
|
|
2309
1928
|
providers: require_seeds.stageProviderNotes(workspace, stage)
|
|
2310
1929
|
});
|
|
2311
1930
|
const devServices = require_seeds.devServicesUsed(services);
|
|
@@ -3036,11 +2655,11 @@ async function settleDns(run, apps) {
|
|
|
3036
2655
|
const { workspace } = run;
|
|
3037
2656
|
const { api, endpoint, journal, state } = run.provisioned;
|
|
3038
2657
|
const appHostnames = new Map([...run.released.appHostnames].filter(([app]) => apps.includes(app)));
|
|
3039
|
-
const dnsConfig = workspace.
|
|
2658
|
+
const dnsConfig = workspace.dns;
|
|
3040
2659
|
if (!dnsConfig || appHostnames.size === 0) return;
|
|
3041
|
-
const dnsResult = await orchestrateDns(appHostnames, dnsConfig, endpoint);
|
|
2660
|
+
const dnsResult = await require_seeds.orchestrateDns(appHostnames, dnsConfig, endpoint);
|
|
3042
2661
|
if (dnsResult?.serverIp) {
|
|
3043
|
-
await verifyDnsRecords(appHostnames, dnsResult.serverIp, state);
|
|
2662
|
+
await require_seeds.verifyDnsRecords(appHostnames, dnsResult.serverIp, state);
|
|
3044
2663
|
await journal.save();
|
|
3045
2664
|
}
|
|
3046
2665
|
if (dnsResult?.success) {
|
|
@@ -3284,7 +2903,7 @@ async function dokployApi(workspace, ctx) {
|
|
|
3284
2903
|
/** Each app's public host, the same way the deploy resolves it. */
|
|
3285
2904
|
function hostOf(workspace, appName, stage) {
|
|
3286
2905
|
const app = workspace.apps[appName];
|
|
3287
|
-
return require_seeds.resolveHost(appName, app, stage, workspace.
|
|
2906
|
+
return require_seeds.resolveHost(appName, app, stage, workspace.domains, app.type === "web" && require_seeds.isMainFrontendApp(appName, app, workspace.apps));
|
|
3288
2907
|
}
|
|
3289
2908
|
/**
|
|
3290
2909
|
* What a deploy would do, from the same lookups it starts with — and nothing
|
|
@@ -3576,4 +3195,4 @@ Object.defineProperty(exports, "verifySettings", {
|
|
|
3576
3195
|
}
|
|
3577
3196
|
});
|
|
3578
3197
|
|
|
3579
|
-
//# sourceMappingURL=engine-
|
|
3198
|
+
//# sourceMappingURL=engine-DgHoFBMw.cjs.map
|