diff --git a/Dockerfile b/Dockerfile index c2a9fd89..bc8e3994 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ FROM base AS build COPY . /usr/src/app WORKDIR /usr/src/app -RUN apt-get update && apt-get install -y python3 make g++ git python3-pip pkg-config libsecret-1-dev && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y python3 make g++ git python3-pip pkg-config libsecret-1-dev git-lfs && git lfs install && rm -rf /var/lib/apt/lists/* # Install dependencies RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile diff --git a/apps/dokploy/Dockerfile b/apps/dokploy/Dockerfile deleted file mode 100644 index 0537b03e..00000000 --- a/apps/dokploy/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM node:18-slim AS base -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable - -FROM base AS build -COPY . /usr/src/app -WORKDIR /usr/src/app - - -RUN apt-get update && apt-get install -y python3 make g++ git git-lfs && git lfs install && rm -rf /var/lib/apt/lists/* - -# Install dependencies -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile - -# Build only the dokploy app -RUN pnpm run dokploy:build - -# Deploy only the dokploy app -RUN pnpm deploy --filter=dokploy --prod /prod/dokploy - -FROM base AS dokploy -COPY --from=build /prod/dokploy /prod/dokploy -WORKDIR /prod/dokploy -EXPOSE 3000 -CMD [ "pnpm", "start" ] \ No newline at end of file diff --git a/apps/dokploy/package.json b/apps/dokploy/package.json index adb10f0e..f7e2e8bf 100644 --- a/apps/dokploy/package.json +++ b/apps/dokploy/package.json @@ -36,6 +36,8 @@ "test": "vitest --config __test__/vitest.config.ts" }, "dependencies": { + "pino": "9.4.0", + "pino-pretty": "11.2.2", "@ai-sdk/anthropic": "^1.0.6", "@ai-sdk/azure": "^1.0.15", "@ai-sdk/cohere": "^1.0.6", diff --git a/packages/server/package.json b/packages/server/package.json index 481abd89..a124518a 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -28,6 +28,8 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "pino": "9.4.0", + "pino-pretty": "11.2.2", "micromatch": "4.0.8", "@ai-sdk/anthropic": "^1.0.6", "@ai-sdk/azure": "^1.0.15", diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index b321f9ce..80831b91 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -131,3 +131,5 @@ export { export * from "./utils/schedules/utils"; export * from "./utils/schedules/index"; + +export * from "./lib/logger"; diff --git a/packages/server/src/lib/logger.ts b/packages/server/src/lib/logger.ts new file mode 100644 index 00000000..1fe4d2da --- /dev/null +++ b/packages/server/src/lib/logger.ts @@ -0,0 +1,11 @@ +import pino from "pino"; + +export const logger = pino({ + transport: { + target: "pino-pretty", + options: { + colorize: true, + levelFirst: false, + }, + }, +}); diff --git a/packages/server/src/templates/index.ts b/packages/server/src/templates/index.ts index c42dd1b7..80a89887 100644 --- a/packages/server/src/templates/index.ts +++ b/packages/server/src/templates/index.ts @@ -35,7 +35,7 @@ export const generateRandomDomain = ({ projectName, }: Schema): string => { const hash = randomBytes(3).toString("hex"); - const slugIp = serverIp.replaceAll(".", "-"); + const slugIp = serverIp.replaceAll(".", "-").replaceAll(":", "-"); return `${projectName}-${hash}${slugIp === "" ? "" : `-${slugIp}`}.traefik.me`; }; diff --git a/packages/server/src/utils/backups/utils.ts b/packages/server/src/utils/backups/utils.ts index 8da992b4..0711c87d 100644 --- a/packages/server/src/utils/backups/utils.ts +++ b/packages/server/src/utils/backups/utils.ts @@ -8,6 +8,7 @@ import { runMySqlBackup } from "./mysql"; import { runPostgresBackup } from "./postgres"; import { runWebServerBackup } from "./web-server"; import { runComposeBackup } from "./compose"; +import { logger } from "@dokploy/server/lib/logger"; export const scheduleBackup = (backup: BackupSchedule) => { const { @@ -222,6 +223,17 @@ export const getBackupCommand = ( ) => { const containerSearch = getContainerSearchCommand(backup); const backupCommand = generateBackupCommand(backup); + + logger.info( + { + containerSearch, + backupCommand, + rcloneCommand, + logPath, + }, + `Executing backup command: ${backup.databaseType} ${backup.backupType}`, + ); + return ` set -eo pipefail; echo "[$(date)] Starting backup process..." >> ${logPath}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45a8d29c..9f682338 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -363,7 +363,13 @@ importers: version: 1.2.0(zod@3.25.7) otpauth: specifier: ^9.2.3 + version: 9.3.4 + pino: + specifier: 9.4.0 version: 9.4.0 + pino-pretty: + specifier: 11.2.2 + version: 11.2.2 postgres: specifier: 3.4.4 version: 3.4.4 @@ -701,7 +707,13 @@ importers: version: 1.2.0(zod@3.25.7) otpauth: specifier: ^9.2.3 + version: 9.3.4 + pino: + specifier: 9.4.0 version: 9.4.0 + pino-pretty: + specifier: 11.2.2 + version: 11.2.2 postgres: specifier: 3.4.4 version: 3.4.4