CLI Kullanımı¶
Stackvo CLI, tüm sistem yönetimi için ana araçtır. Bu kılavuz, generate, up, down, restart, ps, logs gibi temel komutların nasıl kullanılacağını, verbose mode ve dry run gibi ileri seviye özellikleri, yeni servis ekleme, proje oluşturma ve troubleshooting yöntemlerini detaylı olarak göstermektedir. CLI, Docker Compose komutlarını kolaylaştırır ve otomatikleştirir.
Kurulum¶
CLI'yi Sisteme Kurma¶
Bu komut, stackvo komutunu /usr/local/bin/ dizinine sembolik link olarak ekler.
Doğrulama:
Temel Komutlar¶
generate¶
Konfigürasyon dosyalarını üretir.
# Tüm konfigürasyonları üret
./stackvo.sh generate
# Sadece projeleri üret
./stackvo.sh generate projects
# Sadece servisleri üret
./stackvo.sh generate services
Ne yapar: 1. .env dosyasını okur 2. SSL sertifikaları oluşturur (yoksa) 3. generated/stackvo.yml oluşturur 4. generated/docker-compose.dynamic.yml oluşturur 5. generated/docker-compose.projects.yml oluşturur 6. core/traefik/dynamic/routes.yml oluşturur 7. Servis konfigürasyonları oluşturur
Örnek Çıktı:
✅ SSL certificates found
✅ Generated stackvo.yml
✅ Generated docker-compose.dynamic.yml
✅ Generated docker-compose.projects.yml
✅ Generated Traefik routes
✅ Generated 15 service configurations
✅ Generation completed!
up¶
Servisleri başlatır. Varsayılan olarak sadece core servisleri (Traefik + UI) başlatır.
Syntax:
Options: - (boş) - Minimal mode: Sadece core servisler (Traefik + UI) - --all - Tüm servisleri ve projeleri başlat - --services - Core + tüm servisleri başlat - --projects - Core + tüm projeleri başlat - --profile <name> - Core + belirli bir profili başlat
Örnekler:
# Minimal mode - Sadece Traefik + UI
./stackvo.sh up
# Tüm servisleri ve projeleri başlat
./stackvo.sh up --all
# Core + tüm servisleri başlat
./stackvo.sh up --services
# Core + tüm projeleri başlat
./stackvo.sh up --projects
# Core + sadece MySQL başlat
./stackvo.sh up --profile mysql
# Core + belirli bir proje başlat
./stackvo.sh up --profile project-myproject
# Birden fazla profile
./stackvo.sh up --profile mysql --profile redis
Detaylı Çıktı:
Belirli Servisleri Başlatma:
# Docker Compose komutunu doğrudan kullanın
docker compose -f generated/stackvo.yml \
-f generated/docker-compose.dynamic.yml \
-f generated/docker-compose.projects.yml \
up -d mysql redis
down¶
Tüm servisleri durdurur.
Volume'ları da Silme:
Orphan Container'ları Kaldırma:
restart¶
Servisleri yeniden başlatır.
# Tüm servisleri yeniden başlat
./stackvo.sh restart
# Belirli servisleri yeniden başlat
docker compose -f generated/stackvo.yml \
-f generated/docker-compose.dynamic.yml \
restart mysql redis
ps¶
Çalışan servisleri listeler.
Örnek Çıktı:
NAME STATUS PORTS
stackvo-traefik Up 2 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp
stackvo-mysql Up 2 hours 0.0.0.0:3306->3306/tcp
stackvo-redis Up 2 hours 0.0.0.0:6379->6379/tcp
stackvo-rabbitmq Up 2 hours 0.0.0.0:5672->5672/tcp
stackvo-project1-php Up 2 hours 9000/tcp
stackvo-project1-web Up 2 hours 80/tcp
logs¶
Container loglarını görüntüler.
# Tüm logları izle
./stackvo.sh logs
# Belirli servis logunu izle
./stackvo.sh logs mysql
# Follow mode
./stackvo.sh logs -f mysql
# Son 100 satır
./stackvo.sh logs --tail=100 mysql
# Birden fazla servis
./stackvo.sh logs mysql redis
Zaman Damgası ile:
pull¶
Docker image'larını çeker.
Belirli Image'ları Çekme:
docker compose -f generated/stackvo.yml \
-f generated/docker-compose.dynamic.yml \
pull mysql redis
doctor¶
Sistem sağlık kontrolü yapar.
Kontrol Edilen Şeyler: - Docker kurulu mu? - Docker Compose kurulu mu? - Docker daemon çalışıyor mu? - Gerekli portlar açık mı? - .env dosyası var mı? - SSL sertifikaları var mı?
uninstall¶
Stackvo'u kaldırır.
Ne yapar: 1. Tüm container'ları durdurur 2. Volume'ları siler (onay ister) 3. Network'ü siler 4. CLI sembolik linkini kaldırır
İleri Seviye Kullanım¶
Verbose Mode¶
Detaylı çıktı için:
Dry Run¶
Komutları çalıştırmadan görmek için:
Custom .env Dosyası¶
# Farklı bir .env dosyası kullan
cp .env .env.production
nano .env.production
# Generate ile kullan
ENV_FILE=.env.production ./stackvo.sh generate
Belirli Compose Dosyalarıyla Çalışma¶
# Sadece base layer
docker compose -f generated/stackvo.yml up -d
# Base + services
docker compose -f generated/stackvo.yml \
-f generated/docker-compose.dynamic.yml up -d
# Tümü (varsayılan)
docker compose -f generated/stackvo.yml \
-f generated/docker-compose.dynamic.yml \
-f generated/docker-compose.projects.yml up -d
Yaygın Senaryolar¶
Yeni Servis Ekleme¶
# 1. .env dosyasını düzenle
nano .env
# Elasticsearch'ü aktif et
# SERVICE_ELASTICSEARCH_ENABLE=true
# 2. Konfigürasyonları yeniden üret
./stackvo.sh generate
# 3. Servisleri yeniden başlat
./stackvo.sh up
Proje Ekleme¶
# 1. Proje dizini oluştur
mkdir -p projects/newproject/public
# 2. stackvo.json oluştur
cat > projects/newproject/stackvo.json <<EOF
{
"name": "newproject",
"domain": "newproject.loc",
"php": {"version": "8.2"},
"webserver": "nginx",
"document_root": "public"
}
EOF
# 3. Test dosyası
echo "<?php phpinfo();" > projects/newproject/public/index.php
# 4. Projeleri yeniden üret
./stackvo.sh generate projects
# 5. Servisleri yeniden başlat
./stackvo.sh restart
# 6. Hosts dosyasını güncelle
echo "127.0.0.1 newproject.loc" | sudo tee -a /etc/hosts
Servis Versiyonu Değiştirme¶
# 1. .env dosyasını düzenle
nano .env
# MySQL versiyonunu değiştir
# SERVICE_MYSQL_VERSION=8.0 → 8.1
# 2. Konfigürasyonları yeniden üret
./stackvo.sh generate services
# 3. MySQL container'ını yeniden oluştur
docker compose -f generated/stackvo.yml \
-f generated/docker-compose.dynamic.yml \
up -d --force-recreate mysql
Tüm Sistemi Sıfırlama¶
# 1. Tüm container'ları durdur ve sil
./stackvo.sh down -v
# 2. Network'ü sil
docker network rm stackvo-net
# 3. Generated dosyaları sil
rm -rf generated/*
# 4. Yeniden üret
./stackvo.sh generate
# 5. Başlat
./stackvo.sh up
Backup Alma¶
# MySQL backup
docker exec stackvo-mysql mysqldump -u root -proot --all-databases > backup.sql
# PostgreSQL backup
docker exec stackvo-postgres pg_dumpall -U stackvo > backup.sql
# MongoDB backup
docker exec stackvo-mongo mongodump --username root --password root --authenticationDatabase admin --out /backup
# Redis backup
docker exec stackvo-redis redis-cli SAVE
docker cp stackvo-redis:/data/dump.rdb ./redis-backup.rdb
Troubleshooting¶
Container Başlamıyor¶
# Logları kontrol et
./stackvo.sh logs <container-name>
# Container detaylarını incele
docker inspect stackvo-<container-name>
# Konfigürasyonu yeniden üret
./stackvo.sh generate
./stackvo.sh down
./stackvo.sh up
Port Çakışması¶
# Hangi portu kullanan container'ı bul
docker ps --format "table {{.Names}}\t{{.Ports}}"
# .env dosyasında port değiştir
nano .env
# Yeniden üret ve başlat
./stackvo.sh generate
./stackvo.sh restart