ডেভসংকেত

ডকার-কম্পোজ

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

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

  • sabbirshawon
  • rsayed007
  • HridoyHazard
  • mah-shamim

শেয়ার করুন

মূল উদাহরণ (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

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

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

স্পন্সর