ডেভসংকেত

ডকার-কম্পোজ

ডকার ব্যাপকভাবে ব্যবহার করার সময়, বিভিন্ন পাত্রের ব্যবস্থাপনা দ্রুত জটিল হয়ে ওঠে। ডকার কম্পোজ এমন একটি টুল যা আমাদের এই সমস্যাটি কাটিয়ে উঠতে এবং একসাথে একাধিক পাত্রে সহজেই পরিচালনা করতে সহায়তা করে। এই টিউটোরিয়ালে, আমরা এর প্রধান বৈশিষ্ট্য এবং শক্তিশালী প্রক্রিয়াগুলি দেখব।

কন্ট্রিবিউটর

    শেয়ার করুন

    মূল উদাহরণ (Basic example)

    • docker-compose.yml

      version: '2'
      
      services:
        web:
          build:
          # ডকারফাইল থেকে তৈরি করুন
            context: ./Path
            dockerfile: Dockerfile
          ports:
           - "5000:5000"
          volumes:
           - .:/code
        redis:
          image: redis

    বিল্ডিং (Building)

    • web:
        # ডকারফাইল থেকে তৈরি করুন
        build: .
        args:     # বিল্ড আর্গুমেন্ট যুক্ত করুন
          APP_HOME: app
    • কাস্টম ডকারফাইল থেকে তৈরি করুন

      build:
          context: ./dir
          dockerfile: Dockerfile.dev
    • ইমেজ থেকে তৈরি করুন

      image: ubuntu
        image: ubuntu:14.04
        image: tutum/influxdb
        image: example-registry:4000/postgresql
        image: a4bc65fd

    কমান্ড (Commands)

    • কমান্ড চালানোর আদেশ

      command: bundle exec thin -p 3000
        command: [bundle, exec, thin, -p, 3000]
    • এন্ট্রিপয়েন্ট ওভাররাইড করুন

      entrypoint: /app/start.sh
        entrypoint: [php, -d, vendor/bin/phpunit]

    ডিপেন্ডেন্সিস (Dependencies)

    • হোস্টনাম `ডাটাবেস` হিসাবে `db` পরিষেবা উপলব্ধ করে (নির্ভর করে বোঝায়)

      links:
          - db:database
          - redis
    • শুরু করার আগে নিশ্চিত করুন যে `db` জীবিত আছে

      depends_on:
          - db

    লেবেল (Labels)

    • services:
        web:
          labels:
            com.example.description: "Accounting web app"

    ডিএনএস সার্ভার (DNS servers)

    • services:
        web:
          dns: 8.8.8.8
          dns:
            - 8.8.8.8
            - 8.8.4.4

    বাহ্যিক নেটওয়ার্ক (External network)

    • একটি পূর্ব-বিদ্যমান নেটওয়ার্কে যোগদান করুন

      networks:
        default:
          external:
            name: frontend

    ডিভাইস (Devices)

    • services:
        web:
          devices:
          - "/dev/ttyUSB0:/dev/ttyUSB0"

    ব্যবহারকারী (User)

    • ব্যবহারকারী নির্দিষ্ট করা

      user: root
    • আইডি সহ ব্যবহারকারী এবং গোষ্ঠী উভয়ই নির্দিষ্ট করা

      user: 0:0

    মৌলিক কমান্ড (Basic Commands)

    • ডকার সার্ভিস build/rebuild করতে

      docker-compose build
    • ডকার সার্ভিস start/stop করতে

      docker-compose start
      docker-compose stop
    • ডকার সার্ভিস পজ করতে ডকার সার্ভিস পুনরায় শুরু করতে

      docker-compose pause
      docker-compose unpause
    • ডকার সার্ভিসের বর্তমান অবস্থা জানতে

      docker-compose ps
    • ডকার সার্ভিস build/rebuild করতে, অথবা start/restart করতে, অথবা create/recreate করতে

      docker-compose up
    • UP এর মাধ্যমে তৈরি কনটেইনার, নেটওয়ার্ক, ভলিউম এবং ইমেজ বন্ধ এবং রিমুভ করতে

      docker-compose down
    • ডকার কন্টেইনার restart করতে

      docker-compose restart
    • নির্দিষ্ট কন্টেইনারে প্রবেশ করতে

      docker-compose exec <service_name> bash/sh
    • ডকার কম্পোজ বিল্ড করা যাতে কোন cache না থাকে

      docker-compose build --no-cache

    পোর্টস (Ports)

    • ports:
          - "3000"
          - "8000:80"  # host:container
      
    • লিঙ্ক করা পরিষেবাগুলিতে পোর্টগুলি প্রকাশ করুন (হোস্ট করার জন্য নয়)

      expose: ["3000"]

    এনভায়রনমেন্ট ভেরিএবলেস (Environment variables)

    • এনভায়রনমেন্ট ভার্স

      environment:
          RACK_ENV: development
        environment:
          - RACK_ENV=development
    • ফাইল থেকে এনভায়রনমেন্টের পরিবর্তন করা

      env_file: .env
        env_file: [.env, .development.env]

    অন্যান্য বিকল্প (Other options)

    • এই পরিষেবাটি আরও প্রসারিত করুন

      extends:
          file: common.yml  # optional
          service: webapp
    • volumes:
          - /var/lib/mysql
          - ./_data:/var/lib/mysql
    • স্বয়ংক্রিয়ভাবে কন্টেইনার পুনরায় চালু করুন সর্বদা, ব্যর্থতা, না (ডিফল্ট) (always, on-failure, no (default))

      restart: unless-stopped

    হোস্ট (Hosts)

    • services:
        web:
          extra_hosts:
            - "somehost:192.168.1.100"

    নেটওয়ার্ক (Network)

    • 'ফ্রন্টএন্ড' নামে একটি কাস্টম নেটওয়ার্ক তৈরি করা

      networks:
        frontend:

    ভলিউম (Volume)

    • মাউন্ট হোস্ট পাথ বা নাম ভলিউম, একটি পরিষেবার উপ-বিকল্প হিসাবে নির্দিষ্ট করা হয়

      db:
          image: postgres:latest
          volumes:
            - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
            - "dbdata:/var/lib/postgresql/data"
    • volumes:
        dbdata:

    বাহ্যিক লিঙ্ক (External links)

    • services:
        web:
          external_links:
            - redis_1
            - project_db_1:mysql

    ডেভসংকেত সম্পর্কে

    ডেভসংকেত এর লক্ষ্য হচ্ছে বাংলাতে একটা বড় চিটশিটের ভান্ডার গড়ে তোলা। এটা সম্পূর্ণ স্বাধীন এবং ওপেন সোর্স গিটহাব অর্গানাইজেশন।

    স্পন্সর