infra: full docker-compose with core-db, tenants-db, mcp, frontend

This commit is contained in:
2026-05-06 15:44:47 +00:00
parent 6f6b449c4c
commit cf41a25721
+26 -22
View File
@@ -1,10 +1,10 @@
version: "3.9"
networks:
manar-internal:
driver: bridge
coolify:
external: true
manar-internal:
driver: bridge
volumes:
manar-core-db-data:
@@ -12,7 +12,6 @@ volumes:
services:
# ── Core Registry DB ─────────────────────────────────────
manar-core-db:
image: postgres:16-alpine
container_name: manar-core-db
@@ -23,7 +22,7 @@ services:
POSTGRES_PASSWORD: ${CORE_DB_PASSWORD}
volumes:
- manar-core-db-data:/var/lib/postgresql/data
- ./core-db/init:/docker-entrypoint-initdb.d
- ./core-db/init:/docker-entrypoint-initdb.d:ro
networks:
- manar-internal
healthcheck:
@@ -32,7 +31,6 @@ services:
timeout: 5s
retries: 5
# ── Tenants DB ───────────────────────────────────────────
manar-tenants-db:
image: postgres:16-alpine
container_name: manar-tenants-db
@@ -43,7 +41,7 @@ services:
POSTGRES_PASSWORD: ${TENANTS_DB_PASSWORD}
volumes:
- manar-tenants-db-data:/var/lib/postgresql/data
- ./tenants-db/init:/docker-entrypoint-initdb.d
- ./tenants-db/init:/docker-entrypoint-initdb.d:ro
networks:
- manar-internal
healthcheck:
@@ -52,20 +50,25 @@ services:
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
CLICKHOUSE_USER: ${CLICKHOUSE_USER:-default}
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD:-}
GOOGLE_ADS_DEVELOPER_TOKEN: ${GOOGLE_ADS_DEVELOPER_TOKEN}
GOOGLE_ADS_CLIENT_ID: ${GOOGLE_ADS_CLIENT_ID}
GOOGLE_ADS_CLIENT_SECRET: ${GOOGLE_ADS_CLIENT_SECRET}
MCP_HOST: 0.0.0.0
MCP_PORT: 8090
networks:
- manar-internal
- coolify
@@ -75,32 +78,33 @@ services:
manar-tenants-db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
test: ["CMD-SHELL", "curl -sf http://localhost:8090/health || exit 1"]
interval: 15s
timeout: 5s
retries: 5
# ── 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
NEXT_PUBLIC_APP_URL: https://manar.asktam.net
MANAR_MCP_URL: http://manar-mcp:8090
CORE_DB_URL: postgresql://manar:${CORE_DB_PASSWORD}@manar-core-db:5432/manar_core
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_URL: https://manar.asktam.net
networks:
- manar-internal
- coolify
depends_on:
- manar-core-db
- 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
- "traefik.enable=true"
- "traefik.http.routers.manar.rule=Host(`manar.asktam.net`)"
- "traefik.http.routers.manar.entrypoints=https"
- "traefik.http.routers.manar.tls.certresolver=letsencrypt"
- "traefik.http.services.manar.loadbalancer.server.port=3000"
- "traefik.docker.network=coolify"