infra: docker-compose with all 4 services

This commit is contained in:
2026-05-06 15:40:39 +00:00
parent 4fbe035a51
commit 2f5db77367
+106
View File
@@ -0,0 +1,106 @@
version: "3.9"
networks:
manar-internal:
driver: bridge
coolify:
external: true
volumes:
manar-core-db-data:
manar-tenants-db-data:
services:
# ── Core Registry DB ─────────────────────────────────────
manar-core-db:
image: postgres:16-alpine
container_name: manar-core-db
restart: unless-stopped
environment:
POSTGRES_DB: manar_core
POSTGRES_USER: manar
POSTGRES_PASSWORD: ${CORE_DB_PASSWORD}
volumes:
- manar-core-db-data:/var/lib/postgresql/data
- ./core-db/init:/docker-entrypoint-initdb.d
networks:
- manar-internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U manar -d manar_core"]
interval: 10s
timeout: 5s
retries: 5
# ── Tenants DB ───────────────────────────────────────────
manar-tenants-db:
image: postgres:16-alpine
container_name: manar-tenants-db
restart: unless-stopped
environment:
POSTGRES_DB: manar_tenants
POSTGRES_USER: manar
POSTGRES_PASSWORD: ${TENANTS_DB_PASSWORD}
volumes:
- manar-tenants-db-data:/var/lib/postgresql/data
- ./tenants-db/init:/docker-entrypoint-initdb.d
networks:
- manar-internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U manar -d manar_tenants"]
interval: 10s
timeout: 5s
retries: 5
# ── MCP Server ───────────────────────────────────────────
manar-mcp:
build:
context: ./mcp
dockerfile: Dockerfile
container_name: manar-mcp
restart: unless-stopped
env_file: .env
environment:
CORE_DB_URL: postgresql://manar:${CORE_DB_PASSWORD}@manar-core-db:5432/manar_core
TENANTS_DB_URL: postgresql://manar:${TENANTS_DB_PASSWORD}@manar-tenants-db:5432/manar_tenants
CLICKHOUSE_HOST: clickhouse
CLICKHOUSE_PORT: 8123
CLICKHOUSE_DB: manar
networks:
- manar-internal
- coolify
depends_on:
manar-core-db:
condition: service_healthy
manar-tenants-db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
# ── Frontend ─────────────────────────────────────────────
manar-frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: manar-frontend
restart: unless-stopped
env_file: .env
environment:
MCP_URL: http://manar-mcp:8000
CORE_DB_URL: postgresql://manar:${CORE_DB_PASSWORD}@manar-core-db:5432/manar_core
networks:
- manar-internal
- coolify
depends_on:
- manar-mcp
labels:
- traefik.enable=true
- traefik.http.routers.manar.rule=Host(`manar.asktam.net`)
- traefik.http.routers.manar.entrypoints=https
- traefik.http.routers.manar.tls=true
- traefik.http.routers.manar.tls.certresolver=letsencrypt
- traefik.http.services.manar.loadbalancer.server.port=3000
- traefik.docker.network=coolify