From d26f8c943d49ce0d013d46670b7b91baa016c937 Mon Sep 17 00:00:00 2001 From: alexandrump Date: Mon, 9 Feb 2026 01:34:24 +0100 Subject: [PATCH] Add Coolify compose and env example --- .env.coolify.example | 12 ++++++++++ README.md | 4 ++++ docker-compose.coolify.yml | 45 ++++++++++++++++++++++++++++++++++++++ docs/DEPLOYMENT.md | 9 ++++++++ 4 files changed, 70 insertions(+) create mode 100644 .env.coolify.example create mode 100644 docker-compose.coolify.yml diff --git a/.env.coolify.example b/.env.coolify.example new file mode 100644 index 0000000..31ca020 --- /dev/null +++ b/.env.coolify.example @@ -0,0 +1,12 @@ +# Coolify environment variables (example values) +POSTGRES_USER=gob +POSTGRES_PASSWORD=change-me-strong +POSTGRES_DB=gob_alert + +# Internal Docker network connection +DATABASE_URL=postgres://gob:change-me-strong@postgres:5432/gob_alert + +API_ADMIN_KEY=change-me-strong + +# Web -> API internal URL (API is NOT public) +API_URL=http://api:3000 diff --git a/README.md b/README.md index 2bd4a91..db067bb 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ docker compose build docker compose up -d ``` +Para Coolify en producción, usa `docker-compose.coolify.yml` y configura las variables en la UI. + Coolify: este `docker-compose.yml` incluye `api`, `web`, `postgres`, `redis` y `adminer` — Coolify puede usar las imágenes construidas aquí o construir directamente desde el contexto del repo. Notas: @@ -47,6 +49,8 @@ npm run dev This will run `turbo run dev` and start both `api` and `web` in dev mode (if dependencies installed). +For Coolify production, use `docker-compose.coolify.yml` and configure variables in the UI. + See `PLAN.md` for project plan and MVP milestones. Documentation: diff --git a/docker-compose.coolify.yml b/docker-compose.coolify.yml new file mode 100644 index 0000000..799586e --- /dev/null +++ b/docker-compose.coolify.yml @@ -0,0 +1,45 @@ +version: '3.8' +services: + postgres: + image: postgres:15-alpine + environment: + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + volumes: + - postgres_data:/var/lib/postgresql/data + + redis: + image: redis:7-alpine + volumes: + - redis_data:/data + + api: + build: + context: ./apps/api + environment: + DATABASE_URL: ${DATABASE_URL} + API_ADMIN_KEY: ${API_ADMIN_KEY} + NODE_ENV: production + depends_on: + - postgres + - redis + restart: unless-stopped + expose: + - "3000" + + web: + build: + context: ./apps/web + environment: + API_URL: ${API_URL} + NODE_ENV: production + depends_on: + - api + restart: unless-stopped + expose: + - "3000" + +volumes: + postgres_data: + redis_data: diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md index b7784fb..5fa624b 100644 --- a/docs/DEPLOYMENT.md +++ b/docs/DEPLOYMENT.md @@ -32,6 +32,15 @@ docker compose build docker compose up -d ``` +## Coolify (producción) +- Usa `docker-compose.coolify.yml` como compose principal. +- No publiques puertos de Postgres/Redis; deja que Coolify gestione el proxy. +- Define las variables en Coolify (Environment/Secrets). Hay un ejemplo en `.env.coolify.example`: + - `POSTGRES_USER`, `POSTGRES_PASSWORD`, `POSTGRES_DB` + - `DATABASE_URL` (ejemplo: `postgres://gob:***@postgres:5432/gob_alert`) + - `API_ADMIN_KEY` + - `API_URL` (ejemplo: `http://api:3000`) + ## Estrategia recomendada (2 mini‑PCs) 1. **Mini‑PC 1**: ejecutar Postgres + Redis + jobs de ingesta. 2. **Mini‑PC 2**: ejecutar API + web + backups + alertas.