From baa13134577854ee5b28c64f97e19bc07a254c93 Mon Sep 17 00:00:00 2001 From: Jainil Prajapati <86187588+jaainil@users.noreply.github.com> Date: Sun, 14 Sep 2025 06:56:26 +0530 Subject: [PATCH] Add Budget Board blueprint with Docker Compose and template configuration (#345) --- blueprints/budget-board/docker-compose.yml | 42 +++++++++++++++++++++ blueprints/budget-board/image.png | Bin 0 -> 9969 bytes blueprints/budget-board/template.toml | 20 ++++++++++ meta.json | 19 ++++++++++ 4 files changed, 81 insertions(+) create mode 100644 blueprints/budget-board/docker-compose.yml create mode 100644 blueprints/budget-board/image.png create mode 100644 blueprints/budget-board/template.toml diff --git a/blueprints/budget-board/docker-compose.yml b/blueprints/budget-board/docker-compose.yml new file mode 100644 index 00000000..80ec9511 --- /dev/null +++ b/blueprints/budget-board/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3.8" +services: + budget-board-server: + restart: unless-stopped + image: ghcr.io/teelur/budget-board/server:release + + environment: + Logging__LogLevel__Default: Information + CLIENT_URL: http://budget-board-client:6253 + POSTGRES_HOST: budget-board-db + POSTGRES_DATABASE: budgetboard + POSTGRES_USER: postgres + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + AUTO_UPDATE_DB: true + + depends_on: + budget-board-db: + condition: service_healthy + budget-board-client: + restart: unless-stopped + image: ghcr.io/teelur/budget-board/client:release + environment: + VITE_API_URL: http://budget-board-server + PORT: 6253 + ports: + - 6253 + depends_on: + - budget-board-server + budget-board-db: + image: postgres:16 + restart: unless-stopped + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: budgetboard + volumes: + - "../files/db-data:/var/lib/postgresql/data" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d budgetboard"] + interval: 5s + timeout: 5s + retries: 5 diff --git a/blueprints/budget-board/image.png b/blueprints/budget-board/image.png new file mode 100644 index 0000000000000000000000000000000000000000..2c51aaafed1f42288a5cf2ead9276091bee8e581 GIT binary patch literal 9969 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