Bu repo, HEGS Haber Sistemi'nin tüm mikroservislerini Docker Compose ile tek seferde başlatmak için oluşturulmuştur.
docker-compose.yml- Tüm servislerin Docker Compose konfigürasyonuenv.example- Ortam değişkenleri şablonuREADME.md- Bu dosya
HEGS sistemi aşağıdaki mikroservislerden oluşur:
| Servis | Repo | Port | Teknoloji |
|---|---|---|---|
| HEGS-DB | HEGS-DB |
5432 | PostgreSQL |
| HEGS-HABER-backend | HEGS-HABER-backend |
8080 | Spring Boot |
| HEGS-HABER-frontend | HEGS-HABER-frontend |
5173 | React + Vite |
| HEGS-AI | HEGS-AI |
8000 | FastAPI + OpenAI |
| HEGS-CROSSWORD | HEGS-CROSSWORD |
8001 | FastAPI + OpenAI |
| HEGS-SCRAPPER | HEGS-SCRAPPER |
9932 | FastAPI |
| HEGS-QUIZGAME | HEGS-QUIZGAME |
4478 | FastAPI + WebSocket |
- Docker Desktop 20.10+ (Windows/macOS) veya Docker Engine 20.10+ (Linux)
- Docker Compose 2.0+
- Git
- OpenAI API Key (AI servisleri için)
Önce bu repo'yu klonlayın:
Windows (PowerShell):
git clone https://github.com/HEGS-HABER/HEGS-SETUP.git
cd HEGS-SETUPmacOS/Linux:
git clone https://github.com/HEGS-HABER/HEGS-SETUP.git
cd HEGS-SETUPHEGS-SETUP klasörü içinde, tüm mikroservisleri aynı seviyeye klonlayın:
Windows (PowerShell):
# HEGS-SETUP klasörü içindeyken
git clone https://github.com/HEGS-HABER/HEGS-DB.git
git clone https://github.com/HEGS-HABER/HEGS-HABER-backend.git
git clone https://github.com/HEGS-HABER/HEGS-HABER-frontend.git
git clone https://github.com/HEGS-HABER/HEGS-AI.git
git clone https://github.com/HEGS-HABER/HEGS-CROSSWORD.git
git clone https://github.com/HEGS-HABER/HEGS-SCRAPPER.git
git clone https://github.com/HEGS-HABER/HEGS-QUIZGAME.gitmacOS/Linux:
# HEGS-SETUP klasörü içindeyken
git clone https://github.com/HEGS-HABER/HEGS-DB.git
git clone https://github.com/HEGS-HABER/HEGS-HABER-backend.git
git clone https://github.com/HEGS-HABER/HEGS-HABER-frontend.git
git clone https://github.com/HEGS-HABER/HEGS-AI.git
git clone https://github.com/HEGS-HABER/HEGS-CROSSWORD.git
git clone https://github.com/HEGS-HABER/HEGS-SCRAPPER.git
git clone https://github.com/HEGS-HABER/HEGS-QUIZGAME.gitClone işleminden sonra klasör yapınız şöyle olmalı:
HEGS-SETUP/
├── docker-compose.yml
├── env.example
├── README.md
├── HEGS-DB/
├── HEGS-HABER-backend/
├── HEGS-HABER-frontend/
├── HEGS-AI/
├── HEGS-CROSSWORD/
├── HEGS-SCRAPPER/
└── HEGS-QUIZGAME/
Windows (PowerShell):
# HEGS-SETUP klasöründeyken
Copy-Item env.example .env
notepad .envmacOS/Linux:
# HEGS-SETUP klasöründeyken
cp env.example .env
nano .env
# veya
open -e .env.env dosyasını düzenleyin ve gerekli API key'leri ekleyin:
# OpenAI API Key (Gerekli - AI ve Crossword servisleri için)
OPENAI_API_KEY=your-openai-api-key-here
# Firebase Configuration (Gerekli - Authentication için)
VITE_FIREBASE_API_KEY=your-firebase-api-key
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your-sender-id
VITE_FIREBASE_APP_ID=your-app-id
# News API Key (Opsiyonel)
VITE_NEWS_API_KEY=your-news-api-key-optionalFirebase Konfigürasyonu Nasıl Alınır:
- Firebase Console → Projeniz → Project Settings
- "Your apps" bölümünden Web App'inizi seçin
- "Config" kısmındaki değerleri kopyalayın
Windows (PowerShell):
docker-compose up -dmacOS/Linux:
docker-compose up -d# Tüm servislerin logları
docker-compose logs -f
# Belirli bir servisin logları
docker-compose logs -f hegs-aiTüm servisler başladıktan sonra (2-3 dakika bekleyin), aşağıdaki URL'leri kontrol edin:
- Frontend: http://localhost:5173
curl http://localhost:8080/actuator/health # Backend
curl http://localhost:8000/health # AI
curl http://localhost:8001/health # Crossword
curl http://localhost:9932/ # Scrapper
curl http://localhost:4478/health # Quiz Game# Docker container içinden bağlan
docker-compose exec hegs-db psql -U hegs_user -d hegs_dbSistem ilk başladığında veritabanı boş olacaktır. Test için örnek veri eklemek isterseniz:
# PostgreSQL'e bağlan
sudo docker-compose exec hegs-db psql -U hegs_user -d hegs_db
# Örnek oyunlar ekle
INSERT INTO games (name, description, reward_points, reward_xp, is_active, image_url) VALUES
('Çengel Bulmaca', 'Kelime bulma oyunu', 100, 50, true, '/default_game.png'),
('Quiz Yarışması', 'Çok oyunculu quiz', 200, 100, true, '/default_game.png'),
('Kelime Oyunu', 'Haber bazlı kelime oyunu', 150, 75, true, '/default_game.png');
# Kontrol et
SELECT * FROM games;
# Çıkış
\qsudo docker-compose exec hegs-db psql -U hegs_user -d hegs_db
INSERT INTO news_categories (name, description) VALUES
('Güncel', 'Güncel haberler'),
('Dünya', 'Dünya haberleri'),
('Spor', 'Spor haberleri'),
('Ekonomi', 'Ekonomi haberleri'),
('Teknoloji', 'Teknoloji haberleri');
\qWindows (PowerShell):
docker-compose stopmacOS/Linux:
docker-compose stopWindows (PowerShell):
docker-compose down -vmacOS/Linux:
docker-compose down -vdocker-compose restartdocker-compose restart hegs-ai# Tüm servisleri yeniden build et
docker-compose build
# Belirli bir servisi build et
docker-compose build hegs-ai
# Cache kullanmadan build et
docker-compose build --no-cache# Container durumunu kontrol et
docker-compose ps
# Detaylı log
docker-compose logs <service-name>
# Container'ı yeniden başlat
docker-compose restart <service-name># Database container'ının çalıştığını kontrol et
docker-compose ps hegs-db
# Database loglarını kontrol et
docker-compose logs hegs-db
# Database'e manuel bağlan
docker-compose exec hegs-db psql -U hegs_user -d hegs_dbEğer portlar kullanımdaysa, docker-compose.yml dosyasında portları değiştirebilirsiniz:
ports:
- "8001:8000" # Host port : Container port# .env dosyasını kontrol et
cat .env | grep OPENAI_API_KEY
# Servisler .env dosyasını okuyorsa, yeniden başlat
docker-compose restart hegs-ai hegs-crosswordFrontend (Browser) → localhost:5173
↓
├── Backend API → localhost:8080
├── AI API → localhost:8000
├── Crossword API → localhost:8001
├── Scrapper API → localhost:9932
└── Quiz WebSocket → localhost:4478
Docker Network (hegs-network):
AI Container → hegs-backend:8080
Crossword Container → hegs-backend:8080
Backend Container → hegs-db:5432
Bir mikroservisi güncellemek için:
# İlgili repo'ya git
cd HEGS-AI
# Son değişiklikleri çek
git pull
# HEGS-SETUP klasörüne dön
cd ..
# Servisi yeniden build et ve başlat
docker-compose up -d --build hegs-aiProduction ortamı için:
- Güvenlik:
.envdosyasındaki şifreleri değiştirin - CORS: Her serviste production domain'leri ekleyin
- SSL/TLS: Nginx reverse proxy ile SSL ekleyin
- Monitoring: Prometheus + Grafana ekleyin
- Backup: Veritabanı otomatik backup stratejisi oluşturun
Her mikroservisin detaylı dokümantasyonu için ilgili repo'nun README'sine bakın:
- HEGS-DB README - PostgreSQL veritabanı şeması
- HEGS-HABER-backend README - Spring Boot backend
- HEGS-HABER-frontend README - React frontend
- HEGS-AI README - AI asistan servisi
- HEGS-CROSSWORD README - Çengel bulmaca servisi
- HEGS-SCRAPPER README - Web scraping servisi
- HEGS-QUIZGAME README - Multiplayer quiz servisi
Bir mikroservis üzerinde geliştirme yaparken:
# Sadece database'i docker'da çalıştır
docker-compose up -d hegs-db
# İlgili servisi local'de geliştir
cd HEGS-AI
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python main.py- Bu kurulum localhost için optimize edilmiştir
- Production deployment için ek konfigürasyonlar gereklidir
- OpenAI API Key kullanımı ücretli olabilir
- Tüm mikroservisler aynı Docker network'ünde çalışır
- Veritabanı ve SQLite verileri Docker volume'larında saklanır
HEGS Haber Sistemi - Mikroservis mimarisi ile geliştirilmiş, AI destekli haber platformu