@@ -1,87 +0,0 @@
|
|||||||
# Déploiement local du site Omnex (control-plane).
|
|
||||||
# Postgres = base de données (GORM)
|
|
||||||
# Redis = sessions utilisateurs
|
|
||||||
# API = backend Go/Gin (avec worker Helm pour les démos)
|
|
||||||
# Web = SPA React/Vite servie par nginx (proxy /api → backend)
|
|
||||||
#
|
|
||||||
# Démarrage : cp .env.example .env && docker compose up --build
|
|
||||||
# Site : http://localhost:3000
|
|
||||||
# API : http://localhost:8080/healthz
|
|
||||||
#
|
|
||||||
# Pour les démos : les charts Helm doivent être dans ./deploy/chart-gestion/
|
|
||||||
# Le kubeconfig est monté automatiquement depuis ~/.kube/config
|
|
||||||
|
|
||||||
services:
|
|
||||||
postgres:
|
|
||||||
image: postgres:16-alpine
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
POSTGRES_USER: ${POSTGRES_USER:-omnex}
|
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-omnex}
|
|
||||||
POSTGRES_DB: ${POSTGRES_DB:-omnex}
|
|
||||||
volumes:
|
|
||||||
- pgdata:/var/lib/postgresql/data
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-omnex} -d ${POSTGRES_DB:-omnex}"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 3s
|
|
||||||
retries: 10
|
|
||||||
# Pas de port exposé : accès interne uniquement (défense en profondeur).
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:7-alpine
|
|
||||||
restart: unless-stopped
|
|
||||||
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD:-omnexredis}", "--maxmemory", "256mb", "--maxmemory-policy", "allkeys-lru"]
|
|
||||||
volumes:
|
|
||||||
- redisdata:/data
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-omnexredis}", "ping"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 3s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
api:
|
|
||||||
build:
|
|
||||||
context: ./control-plane/api
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
postgres:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
environment:
|
|
||||||
OMNEX_ENV: ${OMNEX_ENV:-dev}
|
|
||||||
OMNEX_ADDR: ":8080"
|
|
||||||
OMNEX_JWT_SECRET: ${OMNEX_JWT_SECRET}
|
|
||||||
OMNEX_ALLOWED_ORIGINS: ${OMNEX_ALLOWED_ORIGINS:-http://localhost:3000,http://localhost:5173}
|
|
||||||
OMNEX_DATABASE_URL: "host=postgres user=${POSTGRES_USER:-omnex} password=${POSTGRES_PASSWORD:-omnex} dbname=${POSTGRES_DB:-omnex} port=5432 sslmode=disable"
|
|
||||||
OMNEX_REDIS_URL: "redis://:${REDIS_PASSWORD:-omnexredis}@redis:6379/0"
|
|
||||||
OMNEX_SEED_USERNAME: ${OMNEX_SEED_USERNAME:-admin}
|
|
||||||
OMNEX_SEED_PASSWORD: ${OMNEX_SEED_PASSWORD}
|
|
||||||
OMNEX_DEMO_DOMAIN: ${OMNEX_DEMO_DOMAIN:-demo.omnex.app}
|
|
||||||
FRONTEND_IMAGE_APP: ${FRONTEND_IMAGE_APP:-xor1234/frontend-mln:latest}
|
|
||||||
BACKEND_IMAGE_APP: ${BACKEND_IMAGE_APP:-xor1234/backend-mln:latest}
|
|
||||||
# Kubeconfig pour accéder au cluster Kubernetes (optionnel - si non fourni, utilise InClusterConfig)
|
|
||||||
KUBECONFIG: /kubeconfig/config
|
|
||||||
volumes:
|
|
||||||
- ./deploy/chart-gestion:/charts:ro
|
|
||||||
- /home/xor_fakers/.kube/config:/kubeconfig/config:ro # ← Fichier, pas répertoire
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
|
|
||||||
web:
|
|
||||||
build:
|
|
||||||
context: ./web
|
|
||||||
args:
|
|
||||||
# Vide = même origine : nginx proxifie /api vers le backend.
|
|
||||||
VITE_API_URL: ""
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
api:
|
|
||||||
condition: service_healthy
|
|
||||||
ports:
|
|
||||||
- "3000:80"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
pgdata:
|
|
||||||
redisdata:
|
|
||||||
Reference in New Issue
Block a user