Files
Visigine/docker/docker-compose.yml
Ihor_Zhekov e344f1b7e7 Initial commit: Visigine (Vite client + Express/SQLite backend)
Container-ready via docker/ compose (frontend nginx + backend Node). Compose adjusted for Coolify on the prod server: frontend uses expose:80 (no host binding — host 8080 is taken by the Coolify proxy; Traefik routes visigine.de), backend ALLOWED_ORIGINS=https://visigine.de. Secrets stay in server/.env (git-ignored); see server/.env.example.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 10:15:06 +02:00

56 lines
1.4 KiB
YAML

# Visigine — single-stack compose. Frontend (nginx) is the only ingress;
# the backend container is reachable only over the internal docker network.
#
# Secrets (MISTRAL_KEY, ADMIN_TOKEN) are read from ../server/.env.
# Deployment vars (NODE_ENV, ALLOWED_ORIGINS, …) are overridden here.
name: visigine
services:
backend:
build:
context: ..
dockerfile: docker/backend.Dockerfile
container_name: visigine-backend
env_file:
- ../server/.env
environment:
NODE_ENV: production
PORT: "3001"
ALLOWED_ORIGINS: "https://visigine.de"
ALLOW_PRIVATE_HOSTS: "0"
DB_PATH: "/data/visigine.db"
expose:
- "3001"
volumes:
# Persist the SQLite file across container rebuilds.
- visigine_data:/data
restart: unless-stopped
networks:
- visigine
frontend:
build:
context: ..
dockerfile: docker/frontend.Dockerfile
container_name: visigine-frontend
# No host port binding: on the Coolify server host-port 8080 is already taken
# by the Coolify/Traefik proxy. Coolify routes the domain (visigine.de) to
# this container's port 80 via Traefik. For local `docker compose` testing,
# temporarily add: ports: ["8090:80"]
expose:
- "80"
depends_on:
backend:
condition: service_healthy
restart: unless-stopped
networks:
- visigine
networks:
visigine:
driver: bridge
volumes:
visigine_data: