Next.js स्टैटिक एक्सपोर्ट डिप्लॉय करें
Next.js स्टैटिक एक्सपोर्ट out/ में HTML, JavaScript और एसेट्स बनाता है। उस डायरेक्टरी को nginx Dockerfile के साथ Lizard पर डिप्लॉय करें। यह तरीका उन पेजों के लिए है जिन्हें पहले से बिल्ड किया जा सकता है; रिक्वेस्ट-टाइम सर्वर फ़ीचर्स के लिए Node.js सर्वर गाइड देखें।
एक्सपोर्ट कॉन्फ़िगर करें
ये ऑप्शन next.config.mjs में मर्ज करें:
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
trailingSlash: true,
images: { unoptimized: true },
};
export default nextConfig;package.json में "build": "next build" रहने दें। यह उदाहरण सीधे एक्सपोर्ट की गई इमेज इस्तेमाल करता है; बाहरी इमेज लोडर भी एक विकल्प है। सभी ज़रूरी डायनामिक रूट पैरामीटर बिल्ड के दौरान ही जेनरेट करें। रिक्वेस्ट-टाइम कुकीज़, Server Actions और ऐसे दूसरे फ़ीचर्स, जिन्हें चालू Next.js सर्वर चाहिए, इस स्टैटिक कंटेनर में नहीं चल सकते। आपका ऐप जिन फ़ीचर्स का उपयोग करता है, उन्हें Next.js स्टैटिक एक्सपोर्ट रेफ़रेंस से मिलाकर देखें।
पूरा Dockerfile जोड़ें
Next.js की ऑटो-डिटेक्शन वाली प्रक्रिया Node सर्वर की उम्मीद करती है। आउटपुट को out/ पर सेट करने से बिल्ड nginx पर स्विच नहीं होता। यह Dockerfile ऐप के रूट में जोड़ें; यह मानकर चलता है कि आप npm इस्तेमाल करते हैं और package-lock.json कमिट की हुई है:
FROM node:22-slim AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /app/out /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80इसी के पास nginx.conf बनाएँ:
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
}ट्रेलिंग-स्लैश वाला एक्सपोर्ट हर रूट के लिए index.html वाली डायरेक्टरी बनाता है। nginx का नियम इन डायरेक्टरीज़ को सर्व करता है और न मिलने वाले पाथ के लिए HTTP 404 लौटाता है। .dockerignore में node_modules, .next, out, .git और .env* जोड़ें, और लोकल बिल्ड फ़ाइलों को अपलोड से बाहर रखें।
बिल्ड और डिप्लॉय करें
npm ci
npm run buildजाँचें कि out/index.html और कोई अपेक्षित अंदरूनी रूट मौजूद है। अगर आपके पास Docker है, तो सर्वर को लोकल रूप से टेस्ट करें:
docker build -t nextjs-static .
docker run --rm -p 8080:80 nextjs-staticCLI सेटअप के बाद नई सर्विस पर डिप्लॉय करें:
lizard init --name nextjs-static
lizard add --service web
lizard up --service web --port 80
lizard logs --build --service web --json
lizard ps --jsonपूरे Dockerfile में npm बिल्ड स्टेप है, जिसे lizardpack पहचान सकता है। मौजूदा सर्विस पर Dockerfile चुनने से पहले टकराने वाले बिल्ड/स्टार्ट ओवरराइड देखें और हटाएँ; बिल्ड का निर्णय-क्रम देखें।
रूट्स और अपडेट्स की जाँच करें
लाइव होम पेज, एक्सपोर्ट किया गया कोई अंदरूनी रूट, कोई JavaScript एसेट और एक ऐसा पाथ जो मौजूद नहीं है, इन सबकी रिक्वेस्ट भेजें। न मौजूद पाथ को HTTP 404 लौटाना चाहिए, न कि HTTP 200 के साथ होम पेज। स्टैटिक रूट्स और 404 में दिए गए चेक इस्तेमाल करें।
एक्सपोर्ट किए गए कंटेंट में किसी भी बदलाव के लिए नया बिल्ड चाहिए। रनटाइम एनवायरनमेंट वेरिएबल्स out/ में पहले से लिखी वैल्यू नहीं बदल सकते। पब्लिक बिल्ड वेरिएबल्स को बिल्ड स्टेज में RUN npm run build से पहले ENV लाइनों के रूप में लिखें। Lizard COMMIT_SHA के अलावा कोई बिल्ड आर्गुमेंट पास नहीं करता, इसलिए ARG खाली रहता है। एक्सपोर्ट किए गए बंडल में कभी भी प्राइवेट क्रेडेंशियल्स न रखें।
9 सितंबर 2026 के डिप्लॉयमेंट चेक और उनकी सीमाओं के लिए टेस्ट किए गए वर्ज़न और क्लाउड नतीजे देखें।
अपडेट: