services: oltalama: build: context: . dockerfile: Dockerfile container_name: oltalama restart: unless-stopped ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 - SESSION_SECRET=${SESSION_SECRET:-} # Boşsa otomatik oluşturulur - AUTO_SEED=${AUTO_SEED:-false} # true yaparsanız örnek data eklenir # Gmail ayarları (ZORUNLU - .env'den veya buradan) - GMAIL_USER=${GMAIL_USER:-} - GMAIL_APP_PASSWORD=${GMAIL_APP_PASSWORD:-} # Telegram ayarları (ZORUNLU - .env'den veya buradan) - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-} - TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID:-} # Ollama ayarları (Opsiyonel) - OLLAMA_SERVER_URL=${OLLAMA_SERVER_URL:-http://host.docker.internal:11434} - OLLAMA_MODEL=${OLLAMA_MODEL:-llama3.2:latest} # Domain ayarları (Opsiyonel) - DOMAIN_URL=${DOMAIN_URL:-} - FRONTEND_URL=${FRONTEND_URL:-} volumes: # Database persistence - oltalama-db:/app/backend/database # Logs persistence - oltalama-logs:/app/backend/logs # .env file (optional bind mount - host'tan container'a) # Eğer host'ta .env yoksa, entrypoint script container içinde oluşturur # NOT: Host'ta .env dosyası yoksa, Docker onu dizin olarak oluşturabilir # Entrypoint script bunu otomatik düzeltir - ./backend/.env:/app/backend/.env:rw healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"] interval: 30s timeout: 3s retries: 3 start_period: 40s networks: - oltalama-network volumes: oltalama-db: driver: local oltalama-logs: driver: local networks: oltalama-network: driver: bridge