खोज…


टिप्पणियों

कम्पोज मल्टी-कंटेनर डॉकटर अनुप्रयोगों को परिभाषित करने और चलाने के लिए एक उपकरण है। Compose के साथ, आप अपने एप्लिकेशन की सेवाओं को कॉन्फ़िगर करने के लिए एक Compose फ़ाइल का उपयोग करते हैं। फिर, एक एकल आदेश का उपयोग करके, आप अपने कॉन्फ़िगरेशन से सभी सेवाओं को बनाते हैं और शुरू करते हैं। कम्पोज़ की सभी विशेषताओं के बारे में अधिक जानने के लिए सुविधाओं की सूची देखें।

कंपोज़ का उपयोग करना मूल रूप से एक तीन-चरणीय प्रक्रिया है।

  1. अपने ऐप के वातावरण को Dockerfile साथ परिभाषित करें ताकि इसे कहीं भी पुन: पेश किया जा सके।
  2. उन सेवाओं को परिभाषित करें जो आपके ऐप को docker-compose.yml ताकि उन्हें एक अलग वातावरण में एक साथ चलाया जा सके।
  3. अंत में, docker-compose up चलाएं और कंपोज़ अपना संपूर्ण ऐप शुरू और चलाएगा।

स्थापना

यदि आप ओएस एक्स या विंडोज पर डॉकर चला रहे हैं, तो डॉकटर-कंपोज को आपके डॉकर में विंडोज या डॉकर टूलबॉक्स इंस्टालेशन के लिए शामिल किया जाना चाहिए।

लिनक्स पर आप GitHub रिलीज़ पेज से सीधे नवीनतम बायनेरिज़ प्राप्त कर सकते हैं: https://github.com/docker/comit/iteases

आप निम्न आदेशों के साथ विशिष्ट रिलीज़ स्थापित कर सकते हैं:

curl -L https://github.com/docker/compose/releases/download/1.7.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

अधिक जानकारी के लिए कृपया दस्तावेज़ पृष्ठ देखें

एक साधारण एप्लिकेशन बनाएं

यह उदाहरण आधिकारिक दस्तावेज से आया है। मान लें कि आपके पास बैकेंड के रूप में रेडिस का उपयोग करके एक अजगर आवेदन है। Dockerfile लिखने के बाद, इस तरह एक docker-compose.yml फ़ाइल docker-compose.yml :

version: '2'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code
    depends_on:
     - redis
  redis:
    image: redis

फिर रन docker-compose up डॉक-कंपोज़ करें पूरे एप्लिकेशन को सेटअप करेगा: अजगर ऐप और रेडिस।


  • version: '2' डॉकटर-कम्पोज़ फ़ाइल सिंटैक्स का संस्करण है
  • services: एक अनुभाग है जो सेवाओं को चलाने के बारे में बताता है
  • web: और redis: शुरू करने के लिए सेवाओं के नाम हैं, उनकी सामग्री का वर्णन है कि उन सेवाओं के लिए कंटेनर को कैसे शुरू करना चाहिए
  • depends_on अर्थ है वेब की एक निर्भरता रेडिस के लिए और उसके बाद redis रचना पहले redis कंटेनर और फिर वेब कंटेनर शुरू करता है। फिर भी करता है docker-compose तक इंतजार नहीं redis कंटेनर शुरू करने से पहले तैयार है web कंटेनर। इसे प्राप्त करने के लिए आपको एक स्क्रिप्ट का उपयोग करना होगा जो एप्लिकेशन सर्वर की शुरुआत में देरी करता है या जब तक कि redis कंटेनर अनुरोध नहीं कर सकता।

एक वॉल्यूम और नेटवर्क सेक्शन को भी जोड़ा जा सकता है। वॉल्यूम सेक्शन का उपयोग करने से डिस्कनेक्ट किए गए वॉल्यूम के लिए अनुमति मिलती है जो कि स्वतंत्र रूप से डॉक कंपोज़ सर्विसेज सेक्शन में रह सकते हैं। नेटवर्क अनुभाग का एक समान परिणाम है।

सेवाओं के रिडिस खंड को इस तरह समायोजित करना होगा:

redis:
  image: redis
  volumes:
    - redis-data:/code
  networks:
    -back-tier 

इसके बाद, डॉकटर वर्जन 2 फाइल के नीचे निम्नलिखित सेक्शन को जोड़ें।

volumes:
  # Named volume
  redis-data: 
    driver: local
networks:
  back-tier:
    driver: bridge

redis-data सेवा अनुभाग से एक सुलभ लेबल प्रदान करता है। driver:local मात्रा को स्थानीय फ़ाइल सिस्टम में सेट करता है।

back-tier नेटवर्क सेक्शन लेबल को सर्विस सेक्शन में पहुँच योग्य होने के लिए सेट करता है।

डॉकटर-कम्पोज़ सेवा में कमांड चलाएँ

docker-compose run service-name command

यदि, उदाहरण के लिए, आप rake db:create चलाना चाहते हैं rake db:create अपनी web सेवा में rake db:create , तो आप निम्न कमांड का उपयोग करेंगे:

docker-compose run web rake db:create

डॉकर कम्पोज़ स्थापित करें

  1. डॉकर इंजन स्थापित करें

यदि आपको एक Permission denied त्रुटि मिलती है, तो नीचे दिए गए दो आदेशों से पहले sudo -i चलाएँ, फिर बाहर निकलें।

  1. पुल डॉकटर कम्पोज /usr/local/bin/docker-compose
curl -L https://github.com/docker/compose/releases/download/1.7.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

आप अपने वांछित संस्करण से मिलान करने के लिए संस्करण 1.7.1 बदल सकते हैं। Https://github.com/docker/compose/releases से संस्करण प्राप्त करने का प्रयास करें

  1. बाइनरी के लिए निष्पादन योग्य अनुमतियों को लागू करें।
chmod +x /usr/local/bin/docker-compose
  1. स्थापना का परीक्षण करें।
docker-compose --version

अपेक्षित डॉक-कम्पोज़ संस्करण 1.7.1, 0a9ab35 का निर्माण करें

डॉकर कम्पोज हैलो दुनिया

एक बहुत ही बुनियादी docker-compose.yml इस तरह दिखता है:

version: '2'
services:
  hello_world:
    image: ubuntu
    command: [/bin/echo, 'Hello world']

यह फ़ाइल इसलिए बना रही है कि इसमें एक hello_world सेवा है, जिसे ubuntu:latest से आरंभ किया गया है ubuntu:latest चित्र और वह, जब इसे चलाया जाता है, तो यह केवल echo 'Hello world'

आप कर रहे हैं तो folder निर्देशिका (और यह इस में शामिल है docker-compose.yml फ़ाइल), आप कर सकते हैं docker-compose up और आप देखना चाहिए

Creating folder_hello_world_1
Attaching to folder_hello_world_1
hello_world_1 | Hello world
folder_hello_world_1 exited with code 0

इसने ubuntu छवि से कंटेनर बनाया, और कमांड को चलाया जो docker-compose.yml पर निर्दिष्ट किया गया था

Docker-Compose फ़ोल्डर नाम का उपयोग प्रोजेक्ट नाम के रूप में उपसर्ग कंटेनर और नेटवर्क के लिए करता है। किसी अन्य प्रोजेक्ट का नाम सेट करने के लिए, आप या तो docker-compose --project-name NAME {up|down|...} कॉल कर सकते हैं या आप अपने docker-compose --project-name NAME {up|down|...} .env आगे .env नामक फ़ाइल docker-compose.yml और COMPOSE_PROJECT_NAME=name लिख COMPOSE_PROJECT_NAME=name । यह। हाइफ़न (-) के साथ लंबे प्रोजेक्ट नामों से बेहतर बचें क्योंकि डॉकटर इस तरह के नामों के साथ अजीब तरह से रचना करते हैं।

नोट: डॉकटर-कंपोज आपको एक ही होस्ट पर कई डॉकटर कंटेनर चलाने की अनुमति देता है। यदि आप एक से अधिक नोड पर कई कंटेनर चलाना चाहते हैं, तो कृपया समाधान जैसे कि झुंड / कुबेरनेट का संदर्भ लें।

रूबी ऑन रेलक-कंपोज़ के साथ रूबी

यदि आप रेल एप्लिकेशन के लिए docker का उपयोग करना चाहते हैं, और डेटाबेस का उपयोग करना चाहते हैं, तो आपको यह जानना होगा कि docker कंटेनर का सारा डेटा नष्ट हो जाएगा (जब तक कि आप विशेष रूप से डेटा रखने के लिए कंटेनर को कॉन्फ़िगर नहीं करते हैं) कभी-कभी, आपको docker कंटेनर बनाने की आवश्यकता होती है एक आवेदन और एक डेटाबेस के साथ एक पुराने कंटेनर में संलग्न करें।

रेल अनुप्रयोग के एक उदाहरण के रूप में, मैंने एक साधारण ऐप का उपयोग किया। आप इसे कमांड से बना सकते हैं:

rails new compose-app --database=postgresql

बेशक, आपको पहले से रेल, माणिक, आदि स्थापित करने की आवश्यकता है।

फिर, अपने प्रोजेक्ट में Dockerfile बनाएं, और इस डेटा को उसमें सेट करें:

FROM ruby:2.3.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /compose-app
WORKDIR /compose-app
ADD Gemfile /compose-app/Gemfile
ADD Gemfile.lock /compose-app/Gemfile.lock
RUN bundle install
ADD . /compose-app

अगला चरण - डेटा के साथ docker-compose.yml बनाएं:

version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: bundle exec rails s -e development -p 80 -b '0.0.0.0'
    volumes:
      - .:/compose-app
    ports:
      - "80:80"
    depends_on:
      - db

आप 80 पोर्ट (-p 80) को दूसरे से बदल सकते हैं।

Database.yml config के सेक्शन को डेवलप किया जाना चाहिए:

development: &default
  adapter: postgresql
  encoding: unicode
  database: postgres
  pool: 5
  username: postgres
  password:
  host: db

अब आप कमांड से चित्र बना सकते हैं:

docker-compose build

(परियोजना निर्देशिका में इसे चलाएं)

और सभी से शुरू करें:

docker-compose up

यदि सब कुछ सही ढंग से किया जाता है, तो आप कंसोल में रेल से लॉग देख पाएंगे।

कंसोल बंद करें। यह काम कर जाएगा।

यदि आप डेटाबेस के बिना रेल एप्लिकेशन के साथ केवल कंटेनर हटाना चाहते हैं, तो आपको प्रोजेक्ट निर्देशिका में चलाने की आवश्यकता है:

docker-compose stop web
docker-compose build web
docker-compose up -d --no-deps web

रेल एप्लिकेशन के साथ नया कंटेनर बनाया और लॉन्च किया जाएगा।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow