82 lines
2.9 KiB
Markdown
82 lines
2.9 KiB
Markdown
<p align="center">
|
||
<img src="public/img/logo-light.svg" width="400" alt="Truncgil Finance Logo Light" style="background-color: #333; padding: 10px; border-radius: 5px;">
|
||
</p>
|
||
|
||
# Truncgil Finance Application
|
||
|
||
|
||
Bu proje, Truncgil bünyesinde geliştirilen Docker tabanlı bir Laravel finans uygulamasıdır. Proje; PHP 8.2-FPM, Nginx ve MySQL 8.0 servislerini içermektedir.
|
||
|
||
## 🚀 Hızlı Başlangıç (Kurulum)
|
||
|
||
Projeyi yerel ortamınızda veya sunucunuzda çalıştırmak için aşağıdaki adımları izleyin:
|
||
|
||
### 1. Depoyu Klonlayın
|
||
```bash
|
||
git clone https://git.truncgil.com/truncgit/finance.git
|
||
cd finance
|
||
```
|
||
|
||
### 2. Yapılandırma Dosyasını Hazırlayın
|
||
`.env.example` dosyasını `.env` olarak kopyalayın ve gerekli düzenlemeleri yapın:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
> **Önemli:** Docker içerisinde çalışırken `DB_HOST=db` ve `DB_PORT=3306` (docker iç ağı için) olarak ayarlanmalıdır. Dışarıdan erişim için Docker 3308 portunu kullanmaktadır.
|
||
|
||
### 3. Servisleri Başlatın
|
||
Proje içerisinde bulunan `restart.sh` betiği, port çakışmalarını kontrol eder, eski konteynerleri temizler ve sistemi Docker Compose ile ayağa kaldırır:
|
||
```bash
|
||
chmod +x restart.sh
|
||
./restart.sh
|
||
```
|
||
|
||
### 4. Uygulamaya Erişin
|
||
Servisler başarıyla başlatıldıktan sonra tarayıcınızdan şu adrese gidebilirsiniz:
|
||
- **Uygulama:** [http://localhost:8089](http://localhost:8089)
|
||
- **Veritabanı (Dış Erişim):** localhost:3308
|
||
|
||
---
|
||
|
||
## 🛠️ Nasıl Çalışır? (Mimari)
|
||
|
||
Proje, modern konteynerleştirme standartlarına uygun olarak tasarlanmıştır:
|
||
|
||
### Servis Yapısı
|
||
- **app:** PHP 8.2-FPM üzerinde koşan Laravel uygulamasıdır. `dockerfile` içerisinde gerekli PHP eklentileri (pdo_mysql, bcmath, gd vb.) ve otomatik görevler (cron) yapılandırılmıştır.
|
||
- **web:** Nginx (alpine) sunucusudur. Gelen istekleri karşılar ve PHP servisine yönlendirir.
|
||
- **db:** MySQL 8.0 veritabanıdır. Veriler `db_data` volume'ü içerisinde kalıcı olarak saklanır.
|
||
|
||
### Otomatik Görevler (Cron)
|
||
`dockerfile` içerisinde tanımlanan cron yapısı ile Laravel'in `artisan run-all-fetchs` komutu her dakika otomatik olarak çalıştırılır. Bu, finansal verilerin güncel tutulmasını sağlar.
|
||
|
||
### API Dokümantasyonu
|
||
Proje içerisinde **Scribe** kullanılmaktadır. `dockerfile` build aşamasında API dokümantasyonu otomatik olarak üretilir.
|
||
|
||
---
|
||
|
||
## 💻 Faydalı Komutlar
|
||
|
||
Aşağıdaki komutları konteyner içerisinde çalıştırmak için `docker exec` kullanabilirsiniz:
|
||
|
||
**Migrasyonları Çalıştır:**
|
||
```bash
|
||
docker exec -it truncgil-finance-app php artisan migrate
|
||
```
|
||
|
||
**Verileri Seed Et:**
|
||
```bash
|
||
docker exec -it truncgil-finance-app php artisan db:seed
|
||
```
|
||
|
||
**Logları Takip Et:**
|
||
```bash
|
||
docker compose -p finance logs -f
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 Notlar
|
||
- Uygulama anahtarı (`APP_KEY`) ilk build sırasında otomatik olarak üretilir.
|
||
- Port veya servis isimlerini değiştirmek isterseniz `docker-compose.yml` ve `restart.sh` dosyalarını güncelleyebilirsiniz.
|