mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
fix: error handling
This commit is contained in:
parent
3fdd3ddc74
commit
e6f9867500
@ -1,20 +1,28 @@
|
|||||||
import type { WriteStream } from "node:fs";
|
import type { WriteStream } from "node:fs";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { buildStatic } from "@/server/utils/builders/static";
|
import { buildStatic } from "@/server/utils/builders/static";
|
||||||
|
import { nanoid } from "nanoid";
|
||||||
import type { ApplicationNested } from ".";
|
import type { ApplicationNested } from ".";
|
||||||
import { prepareEnvironmentVariables } from "../docker/utils";
|
import { prepareEnvironmentVariables } from "../docker/utils";
|
||||||
import { getBuildAppDirectory } from "../filesystem/directory";
|
import { getBuildAppDirectory } from "../filesystem/directory";
|
||||||
import { spawnAsync } from "../process/spawnAsync";
|
import { spawnAsync } from "../process/spawnAsync";
|
||||||
|
|
||||||
// TODO: integrate in the vps sudo chown -R $(whoami) ~/.docker
|
|
||||||
export const buildNixpacks = async (
|
export const buildNixpacks = async (
|
||||||
application: ApplicationNested,
|
application: ApplicationNested,
|
||||||
writeStream: WriteStream,
|
writeStream: WriteStream,
|
||||||
) => {
|
) => {
|
||||||
const { env, appName, publishDirectory } = application;
|
const { env, appName, publishDirectory } = application;
|
||||||
const buildAppDirectory = getBuildAppDirectory(application);
|
|
||||||
|
|
||||||
|
const buildAppDirectory = getBuildAppDirectory(application);
|
||||||
|
const buildContainerId = `${appName}-${nanoid(10)}`;
|
||||||
const envVariables = prepareEnvironmentVariables(env);
|
const envVariables = prepareEnvironmentVariables(env);
|
||||||
|
|
||||||
|
const writeToStream = (data: string) => {
|
||||||
|
if (writeStream.writable) {
|
||||||
|
writeStream.write(data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const args = ["build", buildAppDirectory, "--name", appName];
|
const args = ["build", buildAppDirectory, "--name", appName];
|
||||||
|
|
||||||
@ -27,11 +35,7 @@ export const buildNixpacks = async (
|
|||||||
args.push("--no-error-without-start");
|
args.push("--no-error-without-start");
|
||||||
}
|
}
|
||||||
|
|
||||||
await spawnAsync("nixpacks", args, (data) => {
|
await spawnAsync("nixpacks", args, writeToStream);
|
||||||
if (writeStream.writable) {
|
|
||||||
writeStream.write(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Run the container with the image created by nixpacks,
|
Run the container with the image created by nixpacks,
|
||||||
@ -42,38 +46,28 @@ export const buildNixpacks = async (
|
|||||||
if (publishDirectory) {
|
if (publishDirectory) {
|
||||||
await spawnAsync(
|
await spawnAsync(
|
||||||
"docker",
|
"docker",
|
||||||
["create", "--name", `${appName}-temp`, appName],
|
["create", "--name", buildContainerId, appName],
|
||||||
(data) => {
|
writeToStream,
|
||||||
if (writeStream.writable) {
|
|
||||||
writeStream.write(data);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await spawnAsync(
|
await spawnAsync(
|
||||||
"docker",
|
"docker",
|
||||||
[
|
[
|
||||||
"cp",
|
"cp",
|
||||||
`${appName}-temp:/app/${publishDirectory}`,
|
`${buildContainerId}:/app/${publishDirectory}`,
|
||||||
path.join(buildAppDirectory, publishDirectory),
|
path.join(buildAppDirectory, publishDirectory),
|
||||||
],
|
],
|
||||||
(data) => {
|
writeToStream,
|
||||||
if (writeStream.writable) {
|
|
||||||
writeStream.write(data);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await spawnAsync("docker", ["rm", `${appName}-temp`], (data) => {
|
await spawnAsync("docker", ["rm", buildContainerId], writeToStream);
|
||||||
if (writeStream.writable) {
|
|
||||||
writeStream.write(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
await buildStatic(application, writeStream);
|
await buildStatic(application, writeStream);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
await spawnAsync("docker", ["rm", buildContainerId], writeToStream);
|
||||||
|
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user