Bu rehberde neler öğreneceksiniz?
- ✓ Projenizin CI/CD pipeline'ında derlenme davranışını nasıl özelleştireceğinizi
- ✓ Farklı çalışma (run) komutları tanımlayarak uygulamayı sorunsuz başlatmayı
- ✓ Next.js custom build command ve Node.js production run script gibi senaryoları yapılandırmayı
Skyversal, akıllı kod tanıma sistemi sayesinde projenizin kaynak kodunu analiz ederek diline uygun en iyi build ve run komutlarını otomatik olarak yapılandırır. Ancak bir Laravel Octane deploy süreciniz varsa veya standart dışı bir başlatma betiği (script) kullanıyorsanız, otomatik algılamayı devre dışı bırakıp (override) kendi özel komutlarınızı tanımlayabilirsiniz.
🛠️ 1. Özel Komutları Düzenlemek
Projenize özel build ve run komutları tanımlamak için aşağıdaki adımları sırasıyla takip edin:
🏗️ 2. Build Komutu Nedir?
Build komutu, projeniz internet trafiğine açılmadan önce izole konteyner (container) içerisinde çalıştırılan derleme ve hazırlık aşamasıdır. CSS/JS dosyalarını küçültmek (minify), kaynak kodları optimize etmek veya TypeScript dosyalarını derlemek için kullanılır.
npm / pnpmnpm run build veya pnpm run buildnpmnpm run buildnpmnpm run buildcomposer & npmcomposer install --no-dev --prefer-dist --optimize-autoloader && npm install && npm run buildAngular CLI / npmnpm run build
&& operatörünü kullanarak birden fazla komutu ardışık olarak çalıştırabilirsiniz. İlk komut başarıyla tamamlanırsa, bir sonraki komut otomatik olarak devreye girer.
npm install --frozen-lockfile && npm run build
🚀 3. Run Komutu: Sürekli Çalışan Process'leri (Long-running) Başlatmak
Run komutu, derleme (build) işlemi başarıyla bittikten sonra uygulamanızı ayağa kaldıran ve sürekli çalışan ana komuttur. Bu komut aktif olduğu sürece uygulamanız global ağımız üzerinden kesintisiz hizmet verir.
npm / Bunnpm start veya bun run startGunicorngunicorn app:app veya gunicorn core.wsgiOctane / Nginxphp artisan octane:start veya Nginx + PHP-FPMCompiled Binary./main veya ./release/serverHayati Uyarı: Port Dinleme (Bind)
Uygulamanızın Run komutu çalıştığında mutlaka 0.0.0.0 IP'si üzerinden ve Skyversal'in beklediği porttan yayın yaptığından emin olun. Geliştiriciler genelde localhost veya 127.0.0.1 dinletip "Uygulamama erişemiyorum" hatası alırlar. Gerekli olan asıl port, uygulamanıza $PORT çevresel değişkeni (environment variable) olarak sistem tarafından otomatik aktarılır.
❓ 4. Sık Karşılaşılan Sorunlar ve Çözümleri
❌ "Command not found" veya "Script Missing" Hatası
Kullandığınız komutun projenizin `package.json` dosyasındaki `scripts` nesnesi altında tanımlı olduğundan emin olun. Paket yöneticisi olarak pnpm veya yarn kullanıyorsanız, kilit (lock) dosyalarınızın repoda yer aldığını doğrulayın.
❌ Uygulamam Sürekli "Crashed" Durumuna Düşüyor
Run alanına yazdığınız komut mutlaka sürekli çalışan (long-running) bir web sunucusu ya da process başlatmalıdır. İnsanlar bunu sık sık karıştırıyor. Örnek:
php artisan migrate
İş biter. Konteyner kapanır ve sistem uygulamanın çöktüğünü varsayar.
npm start
Veya gunicorn app:app. Sürekli çalışır, istek dinler.
Unutmayın: Değişikliklerden Sonra Yeniden Deploy Edin!
Build ve Run komutlarında yaptığınız değişiklikleri "Kaydet" butonuna bastıktan sonra anında sihirli bir şekilde düzelmez. Değişikliklerin canlı ortama yansıması için projenizin Deployments sekmesine giderek Re-deploy (Yeniden Dağıt) butonuna basmanız zorunludur.
🎉 Her Şey Hazır!
Derleme ve çalışma davranışlarınızı tamamen özelleştirdiniz. Uygulamanız artık tamamen sizin kurallarınıza göre derlenecek ve yayına alınacak.
Bir sonraki rehberde, uygulamanız arka planda çalışırken üretilen çıktıları anlık olarak nasıl izleyeceğinizi öğrenebilirsiniz.
👉 Canlı Deploy Logları