Standalone Mode Nedir?
Standalone Mode, Next.js projelerinin bağımlılıklarını ve gerekli dosyalarını tek bir bağımsız klasöre taşıyarak uygulamaların Docker gibi konteyner ortamlarında daha verimli çalışmasını sağlayan bir yapılandırmadır. Bu yapılandırma sayesinde, Docker image boyutu küçülür ve uygulama dağıtımı hızlanır.
Next.js Yapılandırması
Next.js projenizde standalone mode özelliğini etkinleştirmek için, next.config.js dosyanızda aşağıdaki ayarı yapmanız yeterlidir:
Bu yapılandırma, derleme sırasında bağımsız dosyaları .next/standalone klasörüne toplar. Bu sayede bağımlılıklar izole edilir ve Docker container'ınızda daha az yer kaplar.
Standalone Mode için server.js Kullanımı
Standalone Mode, bağımsız bir server.js dosyası ile çalıştırılabilir. Aşağıda, uygulamanın yeniden başlatılmasını (retry) ve hata yakalamayı içeren bir server.js örneği verilmiştir:
Bu dosya root dizinimizde olmalıdır. Bu sayede artık node server.js dediğimiz zaman next.js sunucusunu node instance'i ile ayağa kaldırabilir hale geliyoruz.
Dockerfile Örneği
Standalone Mode ile oluşturulan bir Next.js uygulamasını dağıtmak için çok aşamalı (multi-stage) bir Dockerfile kullanabilirsiniz. Aşağıdaki Dockerfile, hem derleme (build) hem de üretim (production) aşamalarını içermektedir:
Bu makalede Next.js + Docker kullanımında next.js dosyalarını nasıl optimize edeceğinizi öğrendiniz. Dockerfile'ı 2 stage'den oluşacak şekilde kurduk. Bu sayede next.js sunucu hazırlanırken kullanılan ama runtime'da kullanılmayan dosyalardan kurtulmuş olduk. Next.js kodunu node engine ile çalıştırmak için bir server.js dosyası oluşturarak hataları logladık ve sunucuyu kapatmasını önledik. Dockerfile'ı da bu server.js dosyasına bağladık bu sayede logları tek bir yerden takip edebilir hale geldik. Bu yapıyı kullanarak GitHub actions, jenkins veya codepipeline gibi yapılarıyla kendi sunucumuza dağıtım yapabilir hale geliyoruz. Bir sonraki yazıda görüşmek üzere 👋.