mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
feat: apply buildargs
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
import type { WriteStream } from "node:fs";
|
import type { WriteStream } from "node:fs";
|
||||||
import { docker } from "@/server/constants";
|
import { docker } from "@/server/constants";
|
||||||
|
import { prepareBuildArgs } from "@/server/utils/docker/utils";
|
||||||
import * as tar from "tar-fs";
|
import * as tar from "tar-fs";
|
||||||
import type { ApplicationNested } from ".";
|
import type { ApplicationNested } from ".";
|
||||||
import { getBuildAppDirectory } from "../filesystem/directory";
|
import { getBuildAppDirectory } from "../filesystem/directory";
|
||||||
import { createEnvFile } from "./utils";
|
|
||||||
|
|
||||||
export const buildCustomDocker = async (
|
export const buildCustomDocker = async (
|
||||||
application: ApplicationNested,
|
application: ApplicationNested,
|
||||||
writeStream: WriteStream,
|
writeStream: WriteStream,
|
||||||
) => {
|
) => {
|
||||||
const { appName, env } = application;
|
const { appName, buildArgs } = application;
|
||||||
const dockerFilePath = getBuildAppDirectory(application);
|
const dockerFilePath = getBuildAppDirectory(application);
|
||||||
try {
|
try {
|
||||||
const image = `${appName}`;
|
const image = `${appName}`;
|
||||||
@@ -17,10 +17,9 @@ export const buildCustomDocker = async (
|
|||||||
dockerFilePath.substring(0, dockerFilePath.lastIndexOf("/") + 1) || ".";
|
dockerFilePath.substring(0, dockerFilePath.lastIndexOf("/") + 1) || ".";
|
||||||
const tarStream = tar.pack(contextPath);
|
const tarStream = tar.pack(contextPath);
|
||||||
|
|
||||||
createEnvFile(dockerFilePath, env);
|
|
||||||
|
|
||||||
const stream = await docker.buildImage(tarStream, {
|
const stream = await docker.buildImage(tarStream, {
|
||||||
t: image,
|
t: image,
|
||||||
|
buildargs: prepareBuildArgs(buildArgs),
|
||||||
dockerfile: dockerFilePath.substring(dockerFilePath.lastIndexOf("/") + 1),
|
dockerfile: dockerFilePath.substring(dockerFilePath.lastIndexOf("/") + 1),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
||||||
import { dirname, join } from "node:path";
|
|
||||||
import { prepareEnvironmentVariables } from "../docker/utils";
|
|
||||||
|
|
||||||
export const createEnvFile = (directory: string, env: string | null) => {
|
|
||||||
const envFilePath = join(dirname(directory), ".env");
|
|
||||||
if (!existsSync(dirname(envFilePath))) {
|
|
||||||
mkdirSync(dirname(envFilePath), { recursive: true });
|
|
||||||
}
|
|
||||||
const envFileContent = prepareEnvironmentVariables(env).join("\n");
|
|
||||||
writeFileSync(envFilePath, envFileContent);
|
|
||||||
};
|
|
||||||
@@ -161,6 +161,21 @@ export const removeService = async (appName: string) => {
|
|||||||
export const prepareEnvironmentVariables = (env: string | null) =>
|
export const prepareEnvironmentVariables = (env: string | null) =>
|
||||||
Object.entries(parse(env ?? "")).map(([key, value]) => `${key}=${value}`);
|
Object.entries(parse(env ?? "")).map(([key, value]) => `${key}=${value}`);
|
||||||
|
|
||||||
|
export const prepareBuildArgs = (input: string | null) => {
|
||||||
|
const pairs = (input ?? "").split(" ");
|
||||||
|
|
||||||
|
const jsonObject: Record<string, string> = {};
|
||||||
|
|
||||||
|
for (const pair of pairs) {
|
||||||
|
const [key, value] = pair.split("=");
|
||||||
|
if (key && value) {
|
||||||
|
jsonObject[key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
};
|
||||||
|
|
||||||
export const generateVolumeMounts = (mounts: ApplicationNested["mounts"]) => {
|
export const generateVolumeMounts = (mounts: ApplicationNested["mounts"]) => {
|
||||||
if (!mounts || mounts.length === 0) {
|
if (!mounts || mounts.length === 0) {
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
Reference in New Issue
Block a user