services: app: build: ./app working_dir: /app ports: - "${APP_PORT:-3023}:3000" environment: - APP_PORT=3000 - NODE_ENV=${NODE_ENV:-development} - DB_PATH=/var/lib/charactergarden/app.db - OLLAMA_URL=${OLLAMA_URL:-http://ollama:11434} - LLM_RESOLVER_URL=${LLM_RESOLVER_URL:-http://ollama:11434} - LLM_RESOLVER_MODEL=${LLM_RESOLVER_MODEL:-llama3.2:3b} - LLM_RESOLVER_TIMEOUT_MS=${LLM_RESOLVER_TIMEOUT_MS:-15000} - INTENT_RESOLVER_MODE=${INTENT_RESOLVER_MODE:-hybrid} volumes: - sqlite_data:/var/lib/charactergarden - ./app/src:/app/src frontend: build: ./frontend working_dir: /frontend ports: - "${FRONTEND_PORT:-5173}:5173" environment: - CHOKIDAR_USEPOLLING=true volumes: - ./frontend/src:/frontend/src - ./frontend/index.html:/frontend/index.html - ./frontend/vite.config.ts:/frontend/vite.config.ts depends_on: - app ollama: image: ollama/ollama:latest ports: - "11434:11434" volumes: - ollama_data:/root/.ollama profiles: - llm healthcheck: test: ["CMD", "ollama", "list"] interval: 10s timeout: 5s retries: 10 start_period: 20s ollama-init: image: ollama/ollama:latest depends_on: ollama: condition: service_healthy environment: - OLLAMA_HOST=http://ollama:11434 entrypoint: ["ollama", "pull", "${LLM_RESOLVER_MODEL:-llama3.2:3b}"] profiles: - llm volumes: ollama_data: sqlite_data: