# Visigine — deployment compose at the REPO ROOT so build contexts resolve # correctly under Coolify (which runs compose with --project-directory = repo root). # Frontend (nginx) is the only ingress; the backend is reachable only over the # internal docker network. Dockerfiles live in docker/ and assume context = root. # # Secrets (MISTRAL_KEY, ADMIN_TOKEN, …) are injected from Coolify env vars. name: visigine services: backend: build: context: . dockerfile: docker/backend.Dockerfile environment: NODE_ENV: production PORT: "3001" ALLOWED_ORIGINS: "https://visigine.de" ALLOW_PRIVATE_HOSTS: "0" DB_PATH: "/data/visigine.db" MISTRAL_KEY: ${MISTRAL_KEY} ADMIN_TOKEN: ${ADMIN_TOKEN} OPENAI_KEY: ${OPENAI_KEY:-} PERPLEXITY_KEY: ${PERPLEXITY_KEY:-} ANTHROPIC_KEY: ${ANTHROPIC_KEY:-} expose: - "3001" volumes: # Persist the SQLite file across container rebuilds. - visigine_data:/data restart: unless-stopped frontend: build: context: . dockerfile: docker/frontend.Dockerfile # No host port binding: Coolify/Traefik routes visigine.de to this port 80. expose: - "80" depends_on: backend: condition: service_healthy restart: unless-stopped volumes: visigine_data: