---
title: "मेरी सर्विस डिप्लॉय होती है, लेकिन कभी हेल्दी नहीं होती"
description: "बिल्ड सफल होता है, लेकिन डिप्लॉय अनहेल्दी रहता है। पोर्ट बाइंडिंग, गलती से चालू हुआ वर्कर मोड और फ़ेल होने वाले हेल्थ चेक की दूसरी वजहें।"
url: https://lizard.build/hi/docs/deploy/troubleshooting/service-never-healthy/
updated: 2026-10-25
---

# मेरी सर्विस डिप्लॉय होती है, लेकिन कभी हेल्दी नहीं होती

बिल्ड सफल होता है और नया पॉड शुरू हो जाता है, लेकिन डिप्लॉय फ़ेल मार्क हो जाता है या नए वर्ज़न तक कभी ट्रैफ़िक नहीं पहुँचता।

## इसका क्या मतलब है

प्लेटफ़ॉर्म का हेल्थ चेक — आपके ऐप के पोर्ट पर TCP प्रोब — कभी पास नहीं होता, इसलिए ट्रैफ़िक कभी नए पॉड पर नहीं जाता। Lizard लगभग 30 सेकंड इंतज़ार करता है, फिर डिप्लॉय को फ़ेल मार्क कर देता है। जो सर्विस पहले से चल रही थी, वह पुराना वर्ज़न सर्व करती रहती है, बशर्ते उसमें वॉल्यूम अटैच न हो: वॉल्यूम होने पर पुराना पॉड पहले बंद होता है, और जब तक कोई डिप्लॉय पास न हो, सर्विस डाउन रहती है। पहला डिप्लॉय crashed के रूप में दिखता है।

## ऐसा क्यों हो सकता है

- **आपका ऐप अपेक्षित पोर्ट पर नहीं सुन रहा।** Lizard एक `PORT` एनवायरनमेंट वेरिएबल इंजेक्ट करता है (डिफ़ॉल्ट कंटेनर पोर्ट `3000`) और जाँचता है कि आपका ऐप उस पोर्ट पर पहुँच में है या नहीं। अगर ऐप में कोई दूसरा पोर्ट हार्डकोड है, या वह किसी पोर्ट से बाइंड ही नहीं होता, तो हेल्थ चेक कभी पास नहीं होता। Python ऐप में यह सबसे आम है: जब तक आप अलग से न बताएँ, `gunicorn` और `uvicorn` `127.0.0.1` से बाइंड होते हैं, जबकि प्रोब प्रोसेस के बाहर से आता है। [Python ऐप होस्टिंग](https://lizard.build/blog/python-app-hosting#build-and-start-commands) में हर फ़्रेमवर्क के लिए ज़रूरी `--bind 0.0.0.0:$PORT` लाइन दी गई है।
- **सर्विस का पोर्ट इमेज से मेल नहीं खाता।** जब `lizard up` बिना `EXPOSE` लाइन वाले Dockerfile से सर्विस बनाता है, तो वह पोर्ट `3000` सेट करता है, भले ही बेस इमेज किसी और पोर्ट पर सुनती हो, जैसे पोर्ट 80 पर `nginx`। `PORT` वेरिएबल से यह पोर्ट नहीं बदलता। `lizard port <n>` चलाकर रीडिप्लॉय करें, या `EXPOSE` लाइन जोड़ें। [Lizard किस पोर्ट पर रूट करता है](https://lizard.build/hi/docs/deploy/dockerfile.md#which-port-lizard-routes-to) देखें।
- **सर्विस गलती से वर्कर मोड में है।** `containerPort=0` सेट करने से सर्विस [वर्कर मोड](https://lizard.build/hi/docs/deploy/workers.md) में चली जाती है, जो **हेल्थ चेक और लोड बैलेंसर रजिस्ट्रेशन को पूरी तरह छोड़ देता है**। जो सर्विस HTTP सर्व करने के लिए थी, लेकिन `containerPort=0` पर चली गई, वह "सफलतापूर्वक" डिप्लॉय तो हो जाएगी, पर कभी कुछ सर्व नहीं करेगी — वर्कर मोड स्टार्टअप की असली समस्या को सामने लाने के बजाय छिपा देता है।

## संभावित समाधान

### मौजूदा पोर्ट देखें

```bash
lizard port --service api
```

अगर यह `worker mode` प्रिंट करता है, तो सर्विस में `containerPort=0` सेट है। अगर इस सर्विस को HTTP सर्व करना है, तो उसे वापस असली पोर्ट पर सेट करें:

```bash
lizard port 3000 --service api
lizard redeploy --service api
```

### पक्का करें कि आपका ऐप वहीं सुन रहा है जहाँ Lizard उम्मीद करता है

रनटाइम लॉग में स्टार्टअप एरर देखें और वह एड्रेस भी, जिस पर ऐप ख़ुद बताता है कि वह सुन रहा है। उसकी तुलना सर्विस पोर्ट से करें, जिसे Lizard ऐप को `PORT` के रूप में पास करता है:

```bash
lizard logs --service api
lizard port --service api
```

## यह भी देखें

- [बैकग्राउंड वर्कर](https://lizard.build/hi/docs/deploy/workers.md) — `containerPort=0` कब सही विकल्प है (और कब नहीं)।
- [डिप्लॉयमेंट → लाइफ़साइकल](https://lizard.build/hi/docs/concepts/deployments.md#lifecycle) — डिप्लॉय में हेल्थ चेक किस चरण पर होता है।
