Tool.Yun
डेवलपर्स के लिए उपयोगी उपकरण
YAML को JSON में परिवर्तित करने वाला कनवर्टर
YAML को सुंदर बनाएं और प्रारूपित करें
YAML फ़्लैटनर/अनफ़्लैटनर
YAML विलय
YAML से TOML में रूपांतरण
HTML को मार्कडाउन में बदलना
Markdown को DOCX में बदलें
tools.markdown-format-converter.name
ईपब से मार्कडाउन
मार्कडाउन अंतर
मार्कडाउन के रूप में पेस्ट करें
मार्कडाउन को एचटीएमएल में बदलें
मार्कडाउन को टेक्स्ट में बदलें
मार्कडाउन टीओसी जनरेटर
मार्कडाउन टेबल जनरेटर
मार्कडाउन टेबल प्रेटिफायर
मार्कडाउन पूर्वावलोकन
मार्कडाउन लोरेम इप्सम
मार्कडाउन संपादक
मार्कडाउन से डेटा
EXIF हटाएं
GIF को MP4 में बदलें
ICO/PNG कनवर्टर
इमेज EXIF/मेटाडेटा/GPS/JPEG क्वालिटी रीडर
एचईआईसी कनवर्टर
एसवीजी पूर्वावलोकनकर्ता
कैमरा रिकॉर्डर
छवि आकार बदलने वाला
छवि और पीडीएफ का OCR परीक्षण करें
छवि की पृष्ठभूमि हटाएं
छवि को SVG में रूपांतरित करें (पोट्रेस)
छवि तुलना
छवि प्रारूप कनवर्टर
छवि रंग इन्वर्टर
छवि सुधारें # क्रॉप इमेज फोटो एडिटर
वाटर-मार्क
ObjGen से HTML
XML लिंटर
XML से JSON में रूपांतरण
XML स्वरूपक
XSLT परीक्षक
एक्सपाथ परीक्षक
Base64 फ़ाइल कनवर्टर
CSV से डेटा
dBm mW कनवर्टर
ईमेल नॉर्मलाइज़र
ऊर्जा खपत और व्यय कंप्यूटर
एक्सेल से डेटा
कई इकाइयों का कनवर्टर
टेक्स्ट को UTF-8 बाइनरी में रूपांतरित करें
टेक्स्ट को यूनिकोड में बदलें
टोरेंट से मैग्नेट तक
डेटा स्टोरेज यूनिट कनवर्टर
पर्यावरण चर प्रारूप कनवर्टर
पूर्णांक आधार कनवर्टर
प्रॉपर्टीज़ कनवर्टर
बेस64 स्ट्रिंग एनकोडर/डिकोडर
बेस64 हेक्स ऐरे एनकोडर/डिकोडर
भौगोलिक निर्देशांक कनवर्टर
यूएलआईडी जनरेटर
यूनिकोड वर्णों को जावा एंटिटी में परिवर्तित करने वाला
रोमन अंक परिवर्तक
Ansible vault crypt decrypt
Bech32 एनकोडर/डिकोडर
ECDSA कुंजी युग्म जनरेटर
Ed25519 कुंजी जोड़ी जनरेटर
RSA एन्क्रिप्शन
RSA कुंजी जोड़ी जनरेटर
RSA/DSA/ECDSA हस्ताक्षरकर्ता और सत्यापनकर्ता
SAML पार्सर
X509 प्रमाणपत्र जनरेटर
आर्गन2 हैशर
एचमैक जनरेटर
एजीई क्रिप्टोग्राफी
एसएसएल प्रमाणपत्र कनवर्टर
जेडब्ल्यूटी जनरेटर
जेडब्ल्यूटी पार्सर
जैसिप्ट स्ट्रिंग एन्क्रिप्शन
टेक्स्ट को एन्क्रिप्ट/डिक्रिप्ट करें
नाइसवेयर बाइट्स से पासफ़्रेज़ तक
पासेटो/पासेर्क लोकल
पासेटो/पासेर्क सार्वजनिक/निजी
पीजीपी एन्क्रिप्शन
पीजीपी कीजेन
पीजीपी फ़ाइल एन्क्रिप्शन
प्रमाणपत्र/कुंजी पार्सर
फ़ाइल हैशर
बीक्रिप्ट
शमीर के गुप्त रहस्यों का साझाकरण
सीआरसी कैलकुलेटर
सीएसआर जनरेटर
हैश टेक्स्ट
गणित ओसीआर
गणित प्रारूप कनवर्टर
गणित मूल्यांकनकर्ता
टिप कैलकुलेटर
त्रिकोणमितीय/समीकरण वक्र दृश्यक
बाइनरी कैलकुलेटर
क्रॉन एक्सप्रेशन बिल्डर
JSONPath सिंटैक्स चीटशीट
K8 चीटशीट
Nginx चीटशीट
Tmux कमांड चीटशीट
VIM चीटशीट
XPath सिंटैक्स चीटशीट
chmod कमांड चीटशीट
गिट चीटशीट
गिट सिमेंटिक कमिट चीटशीट
ज़ेलिज कमांड चीटशीट
जेक्यू चीटशीट
डॉकर कंपोज़ चीटशीट
डॉकर चीटशीट
डॉकर स्वार्म चीटशीट
डॉकरफ़ाइल चीटशीट
नैनो चीटशीट
पॉवरशेल चीटशीट
बैश चीटशीट
मार्कडाउन चीट शीट
रेगुलर एक्सप्रेशन चीटशीट
सामान्य रेगुलर एक्सप्रेशन चीटशीट
सीएसएस सिलेक्टर्स चीटशीट
सेड चीटशीट
स्क्रीन कमांड चीटशीट
कार्ड पिकर
पासा रोलर
भाग्य का पहिया
सिक्का पलटने वाला
CSV से JSON में रूपांतरण
JS से JSON कनवर्टर
JSON to Go
JSON अंतर
JSON आकार विश्लेषक
JSON एस्केपर/अनएस्केपर
JSON को .env फ़ाइल में बदलें
JSON को C# में रूपांतरित करना
JSON को CSV में बदलें
JSON को JS में परिवर्तित करने वाला कनवर्टर
JSON को PHP कोड में परिवर्तित करें
JSON को PHP-Array में बदलना
JSON को Python में परिवर्तित करें
JSON को YAML में परिवर्तित करने वाला कनवर्टर
JSON को ऑब्जेक्ट में परिवर्तित करें
JSON को सुंदर बनाना और प्रारूपित करना
JSON क्वेरी
JSON फ़्लैटनर/अनफ़्लैटनर
JSON मिनिफाई
JSON लिंटर
JSON विलय
JSON संपादक
JSON से MessagePack
JSON से SQL DDL
JSON से TOML
JSON से TS
JSON से XML में रूपांतरण
JSON से जावा एंटिटी
JSON से डेटा
JSON से स्कीमा
JSON सॉर्ट मास्टर
JSON स्ट्रिंग कनवर्टर
Jq/JSONPath परीक्षक
ObjGen को JSON में परिवर्तित करें
PHP-Array को JSON में परिवर्तित करना
tools.json-patch.name
संदेश पैक को JSON में बदलें
BIP39 पासफ़्रेज़ जनरेटर
UUID कनवर्टर
UUID जनरेटर
ओटीपी कोड जनरेटर
टोकन जनरेटर
डाइसवेयर पासवर्ड जनरेटर
नैनोआईडी जनरेटर
पासफ़्रेज़ जनरेटर
पिन कोड जनरेटर
यादृच्छिक संख्या जनरेटर
संख्यावाचक नाम जनरेटर
TOML से JSON में रूपांतरण
TOML से YAML
टीओएमएल लिंटर
Docker Compose को .env फ़ाइल में स्थानांतरित करें
कुबेरनेट्स आरबीएसी जनरेटर
ट्रैफ़िक डॉकर कंपोज़ मेकर
डॉकर इंस्पेक्ट से डॉकर रन तक
डॉकर इमेज डाउनलोडर
डॉकर कंपोज़ को डॉकर रन में परिवर्तित करें
डॉकर कंपोज़ फॉर्मेट कनवर्टर
डॉकर कंपोज़ वैलिडेटर
डॉकर कंपोज़ से कुबेरनेट्स तक
डॉकर कंपोज़ से क्वाडलेट्स तक
डॉकर को कुबेरनेट्स पर चलाएं
डॉकर क्वाडलेट्स पर चलता है
डॉकर पैंगोलिन लेबल
डॉकर रन को डॉकर कंपोज़ में परिवर्तित करें
डॉकरफ़ाइल लेबल जनरेटर
ISBN वैलिडेटर और पार्सर
आईईएस प्रकाश दिशानिर्देश
आईएसओ 3166 देश कोड खोजक
आईएसओ 639 खोजकर्ता
आईबैन वैलिडेटर और पार्सर
आरएमबी अपरकेस कनवर्टर
एसएलए कैलकुलेटर
ऑनलाइन शब्दकोश
कैलेंडर कनवर्टर
क्रेडिट कार्ड चेकर
दौड़ने की गति कैलकुलेटर
फ़ोन पार्सर और फ़ॉर्मेटर
बीएमआई कैलकुलेटर
मुद्रा परिवर्तक
यूनिकोड खोज
लुह्न वैलिडेटर
वैट नंबर सत्यापनकर्ता
शेल कमांड की व्याख्या करें
सॉफ़्टवेयर लाइसेंस संगतता
ETA कैलकुलेटर
अवधि कैलकुलेटर
आईकैल विलय
आईसीएएल जनरेटर
आईसीएएल फ़ाइल पार्सर
उलटी गिनती
क्रॉन/सप्ताह के दिन का अलार्म
जिस दिन?
टाइमज़ोन कनवर्टर
टीटीएल कैलकुलेटर
ठीक घड़ी
दिनांक+अवधि कैलकुलेटर
दिनांक-समय परिवर्तक
दिनों की गणना
सप्ताह संख्या परिवर्तक
समय अलार्म
BIMI DNS जनरेटर
Chmod कैलकुलेटर
DMARC DNS जनरेटर
DNS क्वेरीज़
DNSBL चेकर
Htpasswd/htaccess जनरेटर
IPRange/CIDR/IPMask में IPv4-6/IPRange/CIDR
IPv4 पता कनवर्टर
IPv4 रेंज विस्तारक
IPv4 सबनेट कैलकुलेटर
IPv4/6 रेंज को CIDR में बदलने वाला कैलकुलेटर
IPv6 ULA जनरेटर
MAC एड्रेस लुकअप
RAID कैलकुलेटर
RAID विश्वसनीयता कैलकुलेटर
Rsync जनरेटर
Whois चेकर
X-VR-स्पैमकॉज़ डिकोडर
ZPOOL RAID कैलकुलेटर
ZPool चीटशीट
Zxcvbn पासवर्ड की मजबूती
tools.restic-command-generator.name
tools.url-redirection-checker.name
अपाचे लॉगरोटेट जनरेटर
आईपी जियो लोकेशन
आईपी सबनेट एक्सक्लूड कैलकुलेटर
आईपीटेबल्स जनरेटर
आईपीवी4 सबनेट सूची
आईपीवी4/6 सीआईडीआर से आईपी रेंज कैलकुलेटर
आईपीवी6 एड्रेस कनवर्टर
आईपीवी6 सबनेट कैलकुलेटर
एआरपीए डिकोडर
एचएएस सैनिटाइजर
एचटीएसेस जनरेटर
एचडीडी कैलकुलेटर
एनजिनक्स फॉर्मेटर
एफस्टैब जनरेटर
एसआईपी प्राधिकरण
एसपीएफ डीएनएस जनरेटर
कर्ल कमांड जनरेटर
क्रोनटैब जनरेटर
क्लाउडफ्लेयर DNS/RDAP क्वेरीज़
गुनगुनाहट
टीसीपी/यूडीपी पोर्ट परीक्षक
डब्ल्यूपीए पीएसके जनरेटर
डीकेआईएम डीएनएस जनरेटर
डेटा स्थानांतरण दर कैलकुलेटर
पासवर्ड शक्ति विश्लेषक
पीटीआर डीएनएस जनरेटर
पुनीकोड कनवर्टर
पूर्णांकों को IPv4/IPv6 में परिवर्तित करना
फायरवॉलडी कमांड लाइन जनरेटर
बंदरगाह संख्याएँ
बुनियादी प्रमाणीकरण जनरेटर
मल्टी लिंक डाउनलोडर
माइक्रोफ़ोन परीक्षक
मेरा आईपी पता
मैक एड्रेस कनवर्टर
मैक एड्रेस जनरेटर
यूएफडब्ल्यू कमांड जनरेटर
रैंडम पोर्ट जनरेटर
वायरगार्ड कॉन्फ़िगरेशन जनरेटर
विकल्प 43 जनरेटर
विज़ुअल सबनेट कैलकुलेटर
वेबसॉकेट परीक्षण
शटडाउन कमांड जनरेटर
शेल कमांड फॉर्मेटर
शेल कमांड्स लीनियराइज़र
HTML से PDF में रूपांतरण
पीडीएफ एन्क्रिप्ट
पीडीएफ कंप्रेसर
पीडीएफ को डिक्रिप्ट और अनलॉक करें
पीडीएफ टेक्स्ट एक्सट्रैक्टर
पीडीएफ पेज एक्सट्रैक्टर
पीडीएफ लीनियराइज़/फास्टवेब
पीडीएफ संयोजनकर्ता
पीडीएफ हस्ताक्षर परीक्षक
GZip/डिफ्लेट कनवर्टर
HTTPS परीक्षक
MongoDB ऑब्जेक्ट आईडी कनवर्टर
RJ45 Cat6 वायरिंग चीटशीट
आउटलुक एमएसजी पार्सर
आउटलुक सेफलिंक डिकोडर
ईएमवी टीएलवी डिकोडर
ईटीएच लेनदेन डिकोडर
ईमेल पार्सर
एक्टिवडायरेक्टरी एलडीएपी प्रॉपर्टीज सर्चर
एनमैप कमांड बिल्डर
एमआईएम एन्कोडिंग कनवर्टर
कुंजीकोड जानकारी
कुकी पार्सर
टीसीपीडींप जनरेटर
टेक्स्ट कैरेक्टर सेट डिटेक्टर/डिकोडर
डीएनएस परीक्षक
डीएनएस प्रसार परीक्षक
डीएमएआरसी रिपोर्ट विश्लेषक
डेड पिक्सेल परीक्षक
पार्केट फाइल रीडर
प्रतिरोधक कैलकुलेटर
फ़ाइल प्रकार डिटेक्टर
फ्लोटिंग पॉइंट संख्या कनवर्टर
बाउंस ईमेल पार्सर
मध्य-एंडियन कनवर्टर
यूआरएल पार्सर
यूआरएल बिल्डर
लघु यूआरएल विस्तारक
शेयरपॉइंट शेयर यूआरएल डिकोडर
संवेदनशील डेटा मास्कर
सीरियल पोर्ट कंसोल
स्नोफ्लेक आईडी एक्सट्रैक्टर
स्मार्ट रॉ कनवर्टर
हेक्स एनकोडर/डिकोडर
键盘测试器
GTIN वैलिडेटर
tools.epc-qrcode-generator.name
क्यूआर कोड जनरेटर
क्यूआर कोड डिकोडर
क्यूआर संपर्क जानकारी जनरेटर
बारकोड जनरेटर
बारकोड रीडर
वाईफाई क्यूआर कोड जनरेटर
आयतन प्रवाह दर कनवर्टर
ऊर्जा इकाई परिवर्तक
एसआई उपसर्ग कनवर्टर
कोण इकाई कनवर्टर
क्षेत्रफल इकाई परिवर्तक
खाद्य ऊर्जा परिवर्तक
तापमान परिवर्तक
त्वरण कनवर्टर
दबाव इकाई कनवर्टर
द्रव्यमान इकाई परिवर्तक
पावर कनवर्टर
प्रकाश कनवर्टर
फिटनेस कंप्यूटर
फ्रिक्वेंसी परिवर्तक
बल इकाई परिवर्तक
लंबाई इकाई परिवर्तक
वॉल्यूम यूनिट कनवर्टर
स्पीड कन्वर्टर
आस्पेक्ट रेशियो कैलकुलेटर
प्रतिशत कैलकुलेटर
बेंचमार्क निर्माता
भौगोलिक दूरी कैलकुलेटर
JSON से TOON
TOON से JSON
Tab बटन दबाकर Spaces पर जाएं
आरएसवीपी रीडर
इमोजी चयनकर्ता
उद्धरण जनरेटर
एआई के लिए पैक फ़ाइलें
एआई प्रॉम्प्ट स्प्लिटर
एएससीआईआई आर्ट टेक्स्ट जनरेटर
एचटीएमएल से टेक्स्ट निकालें
कीबोर्ड लेआउट कनवर्टर
केस कनवर्टर
छवि को ASCII आर्ट में रूपांतरित करें
ज़ाल्गो जनरेटर/बैनर
जीपीटी टोकन अनुमानक
जीपीटी टोकन एनकोडर/डिकोडर
टेक्स्ट को यूनिकोड नामों में बदलना
डुप्लिकेट लाइन खोजक
नमस्कार, जनरेटर।
नाटो वर्णमाला में पाठ
पाठ अंतर
पाठ अनुवादक
पाठ सांख्यिकी
फ़ॉन्ट तुलना
फ़ोल्डर संरचना आरेख
मत्स्यांगना निर्यातक
मैं और एल चेकर
मोर्स कोड कनवर्टर
यूनिकोड से जीएसएम-7
यूनिकोड स्वरूपक
रूण कनवर्टर
रेगुलर एक्सप्रेशन टेस्टर
रैंडम लाइन पिकर
लेवेनस्टीन कैलकुलेटर
विशिष्ट शब्द
सूचियों की तुलना करें
सूची कनवर्टर
सेड कमांड जनरेटर
सोशल लिंक शेयरर
स्ट्रिंग ऑबफस्केटर
स्मार्ट टेक्स्ट रिप्लेसर और लाइनब्रेकर
CLI कमांड संपादक
CSS/JS प्रेटिफ़ाई और मिनिमाइज़
Django सीक्रेट जेनरेटर
JSON को TypeScript में परिवर्तित करें
JSON से Protobuf में रूपांतरण
JSON से SQL में डेटा आयात करें
K6 लोड टेस्टिंग स्क्रिप्ट जनरेटर
SQL को सुंदर बनाना और प्रारूपित करना
SQL पैरामीटर जनरेटर
SQL मिनिफायर
उद्धरण कनवर्टर
एएनएसआई एस्केप टेस्टर
एपीआई परीक्षण
ओपन ग्राफ़ मेटा जनरेटर
कर्ल कनवर्टर
कोड/स्क्रिप्ट हाइलाइटर
गिट एट्रिब्यूट्स जेनरेटर
गिटइग्नोर जनरेटर
जावास्क्रिप्ट अनऑबफस्केटर/अनपैकर
जावास्क्रिप्ट ऑबफस्केटर
जावास्क्रिप्ट प्रेटिफायर
डेटा जालसाज़
डेटाबेस कनेक्शन स्ट्रिंग बिल्डर
डेटाबेस टेबल जनरेटर
डेटाबेस निर्माण बिल्डर
पिकोमैच परीक्षक
पोमोडोरो टाइमर
फ़ाइल स्प्लिटर
फेविकॉन जनरेटर
मेलटो जनरेटर
स्टैकट्रेस और भी सुंदर
स्ट्रिंग एस्केपर
स्वैगर यूआई परीक्षक
हेक्स फ़ाइल कनवर्टर
परिशोधन कैलकुलेटर
HTML एंटिटी से बाहर निकलें
HTML क्लीनर
HTML मिनिफायर
HTML से XHTML
HTML से डेटा
HTTP स्थिति कोड
REM पिक्सेल कनवर्टर
SVG प्लेसहोल्डर जनरेटर
उपयोगकर्ता-एजेंट पार्सर
एचटीएमएल डब्ल्यूवाईएसआईडब्ल्यूवाईजी संपादक
एचटीएमएल प्रेटिफायर
एमआईएम प्रकार
छवि को सीएसएस में बदलें
डिवाइस की जानकारी
यूआरएल कैचर
यूआरएल क्लीनर
यूआरएल टेक्स्ट सर्च फ़्रैगमेंट मेकर
यूआरएल स्वरूपित स्ट्रिंग को एन्कोड/डिकोड करें
यूटीएम यूआरएल जनरेटर
रंग कंट्रास्ट चेकर
रंग कनवर्टर
रंग पहिया
सीएसएस एक्सपाथ कनवर्टर
सीएसएस ग्रेडिएंट जनरेटर
सीएसएस प्रेटिफायर
सीएसएस यूनिट्स कन्वर्टर
स्लगिफ़ाई स्ट्रिंग

डॉकर कंपोज़ चीटशीट

डॉकर कंपोज़ प्रारूप चीटशीट

Docker Compose describes a multi-container application in one YAML file and runs it with a single command. The file declares services (containers), plus the networks, volumes, secrets and configs they use.

ℹ️ The version: key at the top is obsolete — the Compose Spec ignores it. Start the file with services:.

📁 File Names & Precedence

FileRole
compose.yamlThe preferred name (compose.yml also works)
docker-compose.yamlLegacy name, still supported
compose.override.yamlMerged on top of the base file automatically
-f a.yaml -f b.yamlExplicit list; later files override earlier ones
.envVariables for interpolation, read from the project directory
# check what Compose actually resolved, after merges and interpolation
docker compose config

# use a specific set of files
docker compose -f compose.yaml -f compose.prod.yaml up -d

YAML rules that bite

  • Two spaces per indent level, never tabs
  • Keys and values are case-sensitive
  • Lists use -; quote any string containing :, #, {, } or a leading *
  • yes/no/on/off are booleans — quote them if you mean the words

🧱 Minimal Structure

services:
  web:
    image: nginx:1.27
    ports:
      - '8080:80'
    depends_on:
      - api

  api:
    build: .
    environment:
      DATABASE_URL: postgres://db:5432/app
    networks:
      - backend

networks:
  backend:

volumes:
  db-data:

⚙️ Service Options

services:
  app:
    # where the image comes from
    image: myapp:1.2
    build: .
    pull_policy: always

    # identity and lifecycle
    container_name: myapp
    hostname: app
    restart: unless-stopped
    init: true
    stop_grace_period: 30s

    # what it runs
    entrypoint: ['/entrypoint.sh']
    command: ['node', 'server.js']
    working_dir: /app
    user: '1000:1000'

    # configuration
    environment:
      NODE_ENV: production
      API_KEY: ${API_KEY}
    env_file:
      - .env
      - .env.production

    # connectivity
    ports:
      - '8080:80'
    expose:
      - '9000'
    networks:
      - frontend
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    dns:
      - 1.1.1.1

    # storage
    volumes:
      - db-data:/var/lib/data
      - ./src:/app/src:ro
    tmpfs:
      - /tmp

    # ordering and health
    depends_on:
      db:
        condition: service_healthy
    healthcheck:
      test: ['CMD', 'curl', '-f', 'http://localhost/health']
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 20s

    # host access and limits
    cap_add:
      - SYS_PTRACE
    devices:
      - /dev/dri:/dev/dri
    ulimits:
      nofile: 65535
    deploy:
      resources:
        limits:
          cpus: '1.5'
          memory: 512M

    # bookkeeping
    labels:
      com.example.team: platform
    logging:
      driver: json-file
      options:
        max-size: '10m'
        max-file: '3'

🏗 Build Options

services:
  app:
    build:
      context: .
      dockerfile: docker/Dockerfile
      target: production
      args:
        NODE_VERSION: '22'
      cache_from:
        - myapp:cache
      secrets:
        - npmrc
      platforms:
        - linux/amd64
        - linux/arm64
    image: myapp:1.2 # the name given to the built image

📦 Volumes

services:
  db:
    volumes:
      # named volume — managed by Docker, survives 'down'
      - db-data:/var/lib/postgresql/data
      # bind mount — a host path, read-only
      - ./config:/etc/app:ro
      # anonymous volume — keeps node_modules out of the bind mount above
      - /app/node_modules
      # long syntax
      - type: bind
        source: ./src
        target: /app/src
        read_only: true

volumes:
  db-data:
  shared:
    external: true # created outside Compose
  nfs-data:
    driver_opts:
      type: nfs
      o: addr=10.0.0.10,rw
      device: ':/exports/data'

🌐 Networks

services:
  web:
    networks:
      - frontend
  api:
    networks:
      frontend:
        aliases:
          - api.internal
      backend:

networks:
  frontend:
    driver: bridge
  backend:
    internal: true # no outbound access
  existing:
    external: true
    name: some-other-network

💡 Compose creates a default network per project and every service joins it, so containers already reach each other by service name. Declare networks when you want to separate things.

🔀 Ports

services:
  web:
    ports:
      - '8080:80' # host:container
      - '127.0.0.1:8080:80' # bind to one interface only
      - '8080-8090:80-90' # a range
      - '80' # random host port
      - target: 80 # long syntax
        published: '8080'
        protocol: tcp
        mode: host

🧬 Environment Variables

services:
  app:
    environment:
      # map form (preferred)
      LOG_LEVEL: debug
      # take the value from the shell or .env
      API_KEY: ${API_KEY}
      # with a default, and a hard requirement
      PORT: ${PORT:-3000}
      DB_URL: ${DB_URL:?DB_URL must be set}
    env_file:
      - path: .env.production
        required: false
# variables come from the shell, .env, and --env-file, in that order of precedence
API_KEY=abc docker compose up -d
docker compose --env-file .env.staging up -d

🩺 Healthchecks & Startup Order

depends_on on its own only waits for the container to start. Wait for it to be healthy instead:

services:
  db:
    image: postgres:16
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres']
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  api:
    image: myapi
    depends_on:
      db:
        condition: service_healthy # or service_started, service_completed_successfully

🔄 Restart Policies

PolicyBehaviour
noNever restart (the default)
on-failureRestart only on a non-zero exit — on-failure:5 to cap tries
alwaysAlways restart, including after a daemon restart
unless-stoppedLike always, but stays stopped if you stopped it yourself

🧩 Profiles

Profiles keep optional services out of the way until you ask for them.

services:
  web:
    image: nginx # no profile: always started

  debug:
    image: busybox
    command: top
    profiles: [debug]

  seed:
    image: myapp
    command: npm run seed
    profiles: [tools]
# start the default services plus one profile
docker compose --profile debug up -d

# several at once
docker compose --profile debug --profile tools up -d

# COMPOSE_PROFILES works too
COMPOSE_PROFILES=debug,tools docker compose up -d

👀 Watch Mode

docker compose watch syncs or rebuilds automatically as you edit — a dev loop without bind-mount surprises.

services:
  web:
    build: .
    develop:
      watch:
        - action: sync
          path: ./src
          target: /app/src
        - action: rebuild
          path: package.json
        - action: sync+restart
          path: ./config
          target: /etc/app
docker compose watch

♻️ Reuse: include, extends & anchors

# pull in another compose file as if it were written here
include:
  - path: ./monitoring/compose.yaml

services:
  # inherit another service's definition
  worker:
    extends:
      file: common.yaml
      service: base-app
    command: ["node", "worker.js"]

# YAML anchors for repeated blocks
x-logging: &default-logging
  driver: json-file
  options:
    max-size: "10m"

services:
  api:
    logging: *default-logging
  web:
    logging: *default-logging

🔐 Secrets & Configs

File-based secrets work in plain Compose: each one is mounted read-only at /run/secrets/<name>. External secrets and configs require Swarm.

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets:
      - db_password
    configs:
      - source: pg_conf
        target: /etc/postgresql/postgresql.conf

secrets:
  db_password:
    file: ./db_password.txt
  api_token:
    external: true # Swarm only

configs:
  pg_conf:
    file: ./postgresql.conf

🖥 GPU & Device Access

services:
  # NVIDIA — needs the NVIDIA Container Toolkit on the host
  cuda-app:
    image: nvidia/cuda:12.4.1-base-ubuntu22.04
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all # or: device_ids: ["0"]
              capabilities: [gpu]

  # Intel iGPU — VAAPI/OpenCL through the render device
  igpu-app:
    image: intel/openvino
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - video

🚀 Everyday Commands

# start everything in the background
docker compose up -d

# rebuild the images first
docker compose up -d --build

# start one service and what it depends on
docker compose up -d <service>

# recreate containers even if nothing changed
docker compose up -d --force-recreate

# stop and remove containers and networks
docker compose down

# also remove the named volumes and local images
docker compose down -v --rmi local

# what is running, including health
docker compose ps

# follow the logs
docker compose logs -f
docker compose logs -f --tail 100 <service>

# a shell inside a running service
docker compose exec <service> sh

# a one-off container for a task
docker compose run --rm <service> npm test

# rebuild, pull, restart
docker compose build --no-cache
docker compose pull
docker compose restart <service>

# scale a stateless service
docker compose up -d --scale worker=3

# validate and print the effective configuration
docker compose config
docker compose config --services

# processes and resource usage
docker compose top
docker compose stats

⚔️ Compose vs Swarm Stacks

Both read a Compose file, but docker stack deploy honours a different subset of it.

Keydocker composedocker stack deploy
build:✅ builds locally❌ ignored — push the image to a registry first
restart:✅❌ use deploy.restart_policy
depends_on:✅❌ ignored — rely on health checks and retries
profiles:✅❌
develop.watch:✅❌
deploy.replicas/placement❌ ignored✅ this is how you scale
configs: / external secrets:❌ external ones need Swarm✅
healthcheck:✅✅ also drives rescheduling
volumes: / networks:✅✅ (overlay networks in Swarm)

🧭 Keep compose.yaml for local development and a separate stack.yaml for Swarm, or put the Swarm-only bits in an override file.

📚 Resources

  • Compose file reference
  • docker compose CLI reference
  • Compose watch
  • Environment variables and interpolation
  • NVIDIA Container Toolkit