From dbc8badc3d810e872f0ab83991cfe40beb308277 Mon Sep 17 00:00:00 2001 From: Leo Ribeiro Date: Fri, 30 Aug 2024 06:58:29 -0400 Subject: [PATCH] fix docker compose --- metrics-collector/.dockerignore | 3 ++- metrics-collector/.gitignore | 1 + metrics-collector/Dockerfile | 3 +++ metrics-collector/docker-compose.yml | 13 ++++++++++--- metrics-collector/src/index.ts | 12 +++++++----- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/metrics-collector/.dockerignore b/metrics-collector/.dockerignore index 0d1bf99..2a079ca 100644 --- a/metrics-collector/.dockerignore +++ b/metrics-collector/.dockerignore @@ -5,4 +5,5 @@ build .git .vscode *metrics.csv -*metrics.json \ No newline at end of file +*metrics.json +data \ No newline at end of file diff --git a/metrics-collector/.gitignore b/metrics-collector/.gitignore index a00c802..429f7e9 100644 --- a/metrics-collector/.gitignore +++ b/metrics-collector/.gitignore @@ -4,3 +4,4 @@ temp *metrics.json *metrics.csv build +data diff --git a/metrics-collector/Dockerfile b/metrics-collector/Dockerfile index 45ba37b..3c3a431 100644 --- a/metrics-collector/Dockerfile +++ b/metrics-collector/Dockerfile @@ -19,5 +19,8 @@ COPY . . # Build the TypeScript code RUN pnpm run build +# Create a directory for storing state data +RUN mkdir -p /usr/src/app/data + # Expose the port the app runs on EXPOSE 3001 \ No newline at end of file diff --git a/metrics-collector/docker-compose.yml b/metrics-collector/docker-compose.yml index 019cad1..ed39106 100644 --- a/metrics-collector/docker-compose.yml +++ b/metrics-collector/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3" - services: postgres: image: postgres:15-alpine @@ -8,6 +6,11 @@ services: POSTGRES_USER: admin POSTGRES_PASSWORD: supersecret POSTGRES_DB: metrics + healthcheck: + test: ["CMD-SHELL", "pg_isready -U admin -d metrics"] + interval: 5s + timeout: 5s + retries: 5 volumes: - pgdata:/var/lib/postgresql/data ports: @@ -24,9 +27,12 @@ services: DB_PASSWORD: supersecret DB_NAME: metrics depends_on: - - postgres + postgres: + condition: service_healthy ports: - "3001:3001" + volumes: + - metrics-data:/usr/src/app/data grafana: image: grafana/grafana:latest @@ -44,3 +50,4 @@ services: volumes: pgdata: grafana-storage: + metrics-data: diff --git a/metrics-collector/src/index.ts b/metrics-collector/src/index.ts index 617345a..ab30ec3 100644 --- a/metrics-collector/src/index.ts +++ b/metrics-collector/src/index.ts @@ -12,7 +12,7 @@ import { } from "./sonatype-metrics"; import { getYesterdayDate, readJsonFile } from "./utils"; import { readFile, writeFile } from "fs/promises"; -import { existsSync } from "fs"; +import { existsSync, mkdirSync } from "fs"; const isLocalPersistence = process.env.PERSIST_LOCAL_FILES === "true"; @@ -152,8 +152,7 @@ async function initialLoad( } export const getLastSavedState = async (metricName: string) => { - const stateDir = process.env.LAST_SAVED_STATE_PATH || "./"; - const filePath = `${stateDir}/last-saved-state-${metricName}`; + const filePath = `./data/last-saved-state-${metricName}`; if (!existsSync(filePath)) { return undefined; } @@ -162,8 +161,11 @@ export const getLastSavedState = async (metricName: string) => { }; export const saveLastSavedState = (metricName: string, date: Date) => { - const stateDir = process.env.LAST_SAVED_STATE_PATH || "./"; - const filePath = `${stateDir}/last-saved-state-${metricName}`; + const dataDir = "./data"; + if (!existsSync(dataDir)) { + mkdirSync(dataDir, { recursive: true }); + } + const filePath = `${dataDir}/last-saved-state-${metricName}`; return writeFile(filePath, date.toISOString()); };