15 पॉइंट द्वारा GN⁺ 2024-01-15 | 7 टिप्पणियां | WhatsApp पर शेयर करें

#! क्या है?

  • #! (जिसे shebang कहा जाता है) Unix में मुख्य रूप से Python या Bash जैसी scripting languages के लिए इस्तेमाल होने वाली एक परंपरा है
  • इसका उपयोग cross-platform और कई Linux distributions में application deploy करने के तरीके को एक single file में package करने के उदाहरण के रूप में किया गया है
  • उदाहरण Dockerfile में backend, database, और UI सहित पूरा stack server एक single file में बनाया गया है
  • यह Cosmopolitan Libc जैसा है, लेकिन application packaging के लिए है

इसका उपयोग क्यों करें?

  • क्यों न करें?

क्या यह सुरक्षित है?

  • शायद नहीं।

क्या इसका उपयोग करना चाहिए?

  • अगर आप चाहें तो कर सकते हैं।

क्या performance अच्छी है?

  • संभव है।

क्या इसका maintenance संभव है?

  • नहीं।

क्या यह काम करता है?

  • हाँ।

इसे कैसे चलाएँ?

  • इसे निम्न command से चला सकते हैं: chmod +x ./Dockerfile ./Dockerfile
  • उसके बाद http://127.0.0.1:8080 पते पर जाएँ।

GN⁺ की राय

  • यह लेख #! (shebang) का उपयोग करके एक single Dockerfile में पूरे stack server को package करने का एक अनोखा तरीका पेश करता है।
  • यह तकनीकी जिज्ञासा जगाता है और पारंपरिक application deployment तरीकों के लिए एक नया दृष्टिकोण प्रस्तुत करता है।
  • maintenance और stability के लिहाज़ से यह तरीका अनुशंसित नहीं है, लेकिन experimental और innovative projects में रुचि रखने वाले developers के लिए यह एक दिलचस्प विकल्प हो सकता है।

7 टिप्पणियां

 
minhoryang 2024-01-17

<<EOF जैसे heredoc का इस्तेमाल करने के लिए Dockerfile के सबसे ऊपर # syntax = docker/dockerfile:1.4.0 होना ज़रूरी है। हैरानी की बात है कि syntax भी docker registry से ही लाया जाता है।

 
pmc7777 2024-01-16

वाह... इस साल का सबसे बड़ा मानसिक झटका है ये lol

 
arfwene 2024-01-15

दिलचस्प तरीका है।

 
bbulbum 2024-01-15

हाहा.. सच में काफ़ी नया-सा आइडिया है

 
sagee 2024-01-15

वाह.. यह काफ़ी नया और दिलचस्प है। मानो जैसे सरिया और कंक्रीट का कॉम्बिनेशन खोज लिया हो... खैर, यह थोड़ी ज़्यादा बात हो जाएगी, लेकिन अच्छा है।
#! shebang ठीक उसी समय Dockerfile में # comment character होने की वजह से इस तरह की तरकीब चल जाती है..
अब आगे से build-run-test.sh जैसी अलग फ़ाइल की बजाय इसे Dockerfile में ही डालना चाहिए।

 
xguru 2024-01-15

यह काफ़ी मज़ेदार है. haha "इसे इस्तेमाल क्यों नहीं करना चाहिए?"

 
GN⁺ 2024-01-15
Hacker News टिप्पणियाँ
  • nix-shell shebang के उपयोग का उदाहरण

    • nix-shell shebang का उपयोग करके, सभी ज़रूरी dependencies शामिल करने वाली executable script बनाने का तरीका समझाया गया है.
    • इमेज को 50% छोटा करने वाली Python script का उदाहरण दिया गया है.
    • script को execution permission देने पर (chmod +x), यह निर्दिष्ट dependencies के साथ executable बन जाती है.
  • /usr/bin/env के -S / --split-string विकल्प

    • GNU Coreutils 8.30 से उपलब्ध -S विकल्प का विवरण.
    • यह विकल्प non-standard behavior पर निर्भर करता है, और केवल उन OS पर काम करता है जो पूरे text को executable के arguments के रूप में संभालते हैं.
    • ज़्यादातर आधुनिक GNU/Linux, BSDs, और macOS में यह non-standard behavior काम करता है.
  • Docker और architecture compatibility

    • यह बताया गया है कि Linux के अलावा दूसरे platforms पर Docker को वास्तव में Linux VM की ज़रूरत होती है.
    • Linux containers बेहतरीन हैं, लेकिन Docker को सच में cross-platform solution मानना मुश्किल है.
  • single-file application पर राय

    • एक ही file में पूरा application शामिल करने के विचार की सराहना की गई है.
    • Docker की complexity की आलोचना और security या version management के लिए containers के इस्तेमाल पर सवाल उठाया गया है.
    • यह भी पूछा गया है कि क्या WebAssembly(WASM) इन समस्याओं को हल कर सकता है.
  • Docker के विकल्प के रूप में Podman और bubblewrap का उल्लेख

    • Docker की जगह Podman या bubblewrap का उपयोग बेहतर हो सकता है, ऐसा कहा गया है.
    • Podman कुछ खास distributions पर अधिक निर्भर है, और bubblewrap कुछ distributions में security कारणों से शामिल न हो सकता है.
  • heredocs का उपयोग करने वाले single-file project

    • clever shebang के बिना भी heredocs का उपयोग करके किसी भी language या infrastructure के लिए single-file project बनाया जा सकता है.
    • bash script के रूप में पैक की गई उसी app का उदाहरण दिया गया है.
  • "single file" के प्रति जुनून की आलोचना

    • यह इंगित किया गया है कि सब कुछ एक file में पैक करने के बजाय directory का उपयोग करके self-contained application बनाया जा सकता है.
    • यह भी कहा गया है कि single file बनाना हमेशा बेहतर तरीका नहीं होता.
  • self-consuming script pattern

    • script के अंदर दूसरी interpreter script एम्बेड करने और sed से tags के बीच की script निकालने का तरीका समझाया गया है.
    • माना गया है कि यह तरीका कभी-कभी बहुत उपयोगी हो सकता है, लेकिन जटिल भी हो सकता है.
  • shebang स्थिति में guix shell का उपयोग करने का तरीका

    • Guix manual से लिया गया guix shell का उदाहरण दिया गया है.
    • यह अधिक जटिल environment निर्दिष्ट करने वाली manifest file के साथ काम करता है.
  • खुद build और run होने वाला Dockerfile

    • नवंबर 2021 में लिखे गए self-building और self-running Dockerfile का विवरण और उदाहरण कोड दिया गया है.