टर्मिनलको कमान्डबाट कन्फिगरेसन फाइलसम्म

docker run बाट Compose बनाउनुहोस्

फेरि प्रयोग गर्नुपर्ने कमान्डलाई पढ्न र सच्याउन मिल्ने कन्फिगरेसनमा राख्नुहोस्। docker run पेस्ट गरेपछि YAML सँगै भोल्युम र नेटवर्क जाँच्ने सुझाव पनि आउँछन्।

docker runcompose.yaml
ब्राउजरमै रूपान्तरण
01

एउटा कमान्ड पेस्ट गर्नुहोस्। उद्धरण चिन्ह र ब्याकस्ल्यासबाट लाइन जोड्न मिल्छ। टाइप गर्दा नतिजा बदलिन्छ।

02

compose.yaml

services:
  web:
    image: "nginx:alpine"
    container_name: "web"
    ports:
      - "8080:80"
    volumes:
      - "./html:/usr/share/nginx/html:ro"
    restart: "unless-stopped"
    network_mode: "bridge"

विकल्प: 5 · सेवा: 1YAML

चलाउनुअघि

  • पृष्ठभूमिमा चलाउने विकल्प सुरु गर्दा छानिन्छ। docker compose up -d प्रयोग गर्नुहोस्।
  • सापेक्ष पाथ compose.yaml को स्थानबाट गणना हुन्छन्। फाइलको स्थान जाँच्नुहोस् वा पूर्ण पाथ प्रयोग गर्नुहोस्।
  • network_mode: bridge ले docker run को पूर्वनिर्धारित नेटवर्क कायम राख्छ। Compose लाई प्रोजेक्ट नेटवर्क बनाउन दिन यो फिल्ड हटाउनुहोस्।
आफ्नो कम्प्युटरमा जाँच्नुहोस्docker compose config

खाता चाहिँदैन, कमान्ड चलाइँदैन। इनपुट ब्राउजरमै प्रशोधन हुन्छ।

पुरानो कमान्ड खोजिरहनु नपर्ने गरी सेटिङ राख्नुहोस्

पहिलो पटक परीक्षण गर्दा docker run सजिलो हुन्छ। पछि सर्भर फेरिँदा भने उही पोर्ट, डाइरेक्टरी र वातावरण चर चाहिन्छन्। compose.yaml मा यी कुरा छुट्टाछुट्टै फिल्डमा रहन्छन्, त्यसैले फेरबदल जाँच्न र प्रोजेक्टसँग Git मा राख्न सजिलो हुन्छ।

एउटा कमान्डबाट एउटा सेवाको परिभाषा बन्छ। यो उपकरणले चलिरहेका कन्टेनरको सेटिङ पढ्दैन, सर्भर बदल्दैन र सेवाबीचको निर्भरता आफैँ बनाउँदैन। तयार फाइल चलाउने ठाउँमा जाँचेर मात्र प्रयोग गर्नुहोस्।

Compose फाइल बनाउने र जाँच्ने तरिका

docker run वा docker container run बाट सुरु भएको कमान्ड पेस्ट गर्नुहोस्। स्पेस भएका मानका उद्धरण चिन्ह र लाइन जोड्ने ब्याकस्ल्यास कायम राख्नुहोस्। ऐच्छिक सेवाको नामले services भित्रको कुञ्जी बदल्छ; --name बाट आएको container_name बदल्दैन।

टिप्पणी पढ्नुहोस्, YAML सुरक्षित गर्नुहोस् र त्यसले जनाउने फाइल तथा डाइरेक्टरीको स्थान जाँच्नुहोस्। पहिले docker compose config चलाउनुहोस्। निरन्तर चल्ने सेवा पृष्ठभूमिमा सुरु गर्न docker compose up -d प्रयोग गर्न सकिन्छ। --rm भएको एकपटक चल्ने कामको विधि फरक हुन्छ।

उदाहरण: Nginx को पोर्ट र पुनःसुरु नीति

यो उदाहरणले होस्टको पोर्ट 8080 लाई कन्टेनरको पोर्ट 80 सँग जोड्छ। unless-stopped पुनःसुरु नीति YAML मा रहन्छ। -d भने Compose चलाउँदा छानिने विकल्प हो, सेवाको फिल्ड होइन।

docker run -d --name web -p 8080:80 \
  --restart unless-stopped nginx:alpine
services:
  web:
    image: "nginx:alpine"
    container_name: "web"
    ports:
      - "8080:80"
    restart: "unless-stopped"
    network_mode: "bridge"

पुरानै डाटाको भोल्युम प्रयोग भएको निश्चित गर्नुहोस्

नाम भएका भोल्युमलाई उही नाम र external: true सहित राखिन्छ। यसले प्रोजेक्टको उपसर्ग जोडिएको नयाँ भोल्युमको सट्टा पुरानै भोल्युम जनाउँछ। त्यो पहिले नै हुनुपर्छ; नयाँ सेटअपमा भोल्युम पहिले बनाउनुहोस् वा बाह्य भएको चिन्ह हटाउनुहोस्। रूपान्तरणले डाटा कपी गर्दैन।

सापेक्ष पाथ Compose फाइल भएको डाइरेक्टरीबाट गणना हुन्छन्। आफूले छानेको नेटवर्क पनि पहिले नै भएको बाह्य नेटवर्क मानिन्छ। नेटवर्क नदिएको अवस्थामा network_mode: bridge कायम रहन्छ। Compose को प्रोजेक्ट नेटवर्क र सेवाको नामबाट खोज्ने सुविधा चाहिँदा यो फिल्ड हटाउनुहोस्।

Shell ले विस्तार गर्ने मान पहिले नै भर्नुहोस्

POSIX शैलीका उद्धरण चिन्ह, एस्केप र लाइन जोड्ने ढाँचा समर्थित छन्। PowerShell, CMD, पाइपलाइन, धेरै कमान्ड र Docker का ग्लोबल विकल्प समर्थित छैनन्। चर र $(pwd) लाई वास्तविक मानले बदल्नुहोस्। डलर चिन्ह जस्ताको तस्तै चाहिँदा एकल उद्धरण वा एस्केप प्रयोग गर्नुहोस्; Compose मा त्यो $$ हुन्छ।

--env-file का लागि format: raw प्रयोग हुन्छ, जसलाई Docker Compose 2.30.0 वा नयाँ संस्करण चाहिन्छ। उपकरणले फाइल खोल्दैन, इमेज जाँच्दैन र पोर्ट खाली छ कि छैन हेर्दैन। कन्फिगरेसन जाँच सफल हुँदैमा एप चल्ने निश्चित हुँदैन।

Docker विकल्प र Compose का फिल्ड

Docker विकल्पCompose फिल्डअर्थ
IMAGEimageइमेज र ट्याग कायम
--namecontainer_nameतोकिएको कन्टेनर नाम
-p, --publishportsहोस्ट र कन्टेनरका पोर्ट जोड्ने
-e, --envenvironmentनदिइएका मान चलाउने वातावरणबाट लिने
-v, --volume / --mountvolumesBind mount, नाम भएका वा बेनामी भोल्युम
--networknetworks / network_modeनेटवर्कको नाम वा मोड
--restartrestartपुनःसुरु गर्ने नीति
IMAGE [COMMAND] [ARG…]commandआर्गुमेन्ट सूचीका रूपमा राख्ने

रूपान्तरणसम्बन्धी प्रश्नहरू

version किन छैन?

फाइलले Compose Specification अनुसार माथिल्लो तहमा services राख्छ। पुरानो version फिल्ड थपिँदैन। जाँच्न आधुनिक docker compose कमान्ड प्रयोग गर्नुहोस्।

--rm भएको काम कसरी चलाउने?

एकपटकको कामका लागि docker compose run --rm --service-ports SERVICE चलाउनुहोस्। SERVICE लाई सेवाको नामले बदल्नुहोस्। --service-ports ले फाइलमा भएका पोर्ट म्यापिङ लागू गर्छ।

नचिनिएको विकल्प हटाइन्छ?

हटाइँदैन। --gpus, --link र केही जटिल mount सेटिङले रूपान्तरण रोक्छन्। अपूर्ण YAML नबनोस् भनेर ती विकल्प आफैँ मिलाउनुपर्छ।

धेरै कमान्ड एउटै फाइलमा राख्न मिल्छ?

एकएक गरी रूपान्तरण गरेर सेवाका परिभाषा जोड्नुहोस्। साझा भोल्युम, नेटवर्क र सेवाको निर्भरता आफैँ मिलाउनुपर्छ।

पासवर्ड सर्भरमा पठाइन्छ?

कमान्ड अपलोड हुँदैन; रूपान्तरण ब्राउजरमै हुन्छ। तर भरेका मान तयार फाइलमा रहन्छन्, त्यसैले रिपोजिटरीमा राख्नुअघि सामग्री जाँच्नुहोस्।

चलिरहेको कन्टेनर बदलिन्छ?

रूपान्तरणले Docker मा कुनै काम गर्दैन। पछि Compose सुरु गर्दा एउटै कन्टेनर नाम वा प्रयोगमा रहेको पोर्टको द्वन्द्व समाधान गर्नुपर्छ।

Docker को आधिकारिक दस्तावेज: docker run · Compose · $$