ডকার ব্যাপকভাবে ব্যবহার করার সময়, বিভিন্ন পাত্রের ব্যবস্থাপনা দ্রুত জটিল হয়ে ওঠে। ডকার কম্পোজ এমন একটি টুল যা আমাদের এই সমস্যাটি কাটিয়ে উঠতে এবং একসাথে একাধিক পাত্রে সহজেই পরিচালনা করতে সহায়তা করে। এই টিউটোরিয়ালে, আমরা এর প্রধান বৈশিষ্ট্য এবং শক্তিশালী প্রক্রিয়াগুলি দেখব।
docker-compose.yml
version: '2'
services:
web:
build:
# ডকারফাইল থেকে তৈরি করুন
context: ./Path
dockerfile: Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: redis
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
কমান্ড চালানোর আদেশ
command: bundle exec thin -p 3000
command: [bundle, exec, thin, -p, 3000]
এন্ট্রিপয়েন্ট ওভাররাইড করুন
entrypoint: /app/start.sh
entrypoint: [php, -d, vendor/bin/phpunit]
হোস্টনাম `ডাটাবেস` হিসাবে `db` পরিষেবা উপলব্ধ করে (নির্ভর করে বোঝায়)
links:
- db:database
- redis
শুরু করার আগে নিশ্চিত করুন যে `db` জীবিত আছে
depends_on:
- db
একটি পূর্ব-বিদ্যমান নেটওয়ার্কে যোগদান করুন
networks:
default:
external:
name: frontend
ডকার সার্ভিস 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:
- "3000"
- "8000:80" # host:container
লিঙ্ক করা পরিষেবাগুলিতে পোর্টগুলি প্রকাশ করুন (হোস্ট করার জন্য নয়)
expose: ["3000"]
এনভায়রনমেন্ট ভার্স
environment:
RACK_ENV: development
environment:
- RACK_ENV=development
ফাইল থেকে এনভায়রনমেন্টের পরিবর্তন করা
env_file: .env
env_file: [.env, .development.env]
এই পরিষেবাটি আরও প্রসারিত করুন
extends:
file: common.yml # optional
service: webapp
volumes:
- /var/lib/mysql
- ./_data:/var/lib/mysql
স্বয়ংক্রিয়ভাবে কন্টেইনার পুনরায় চালু করুন সর্বদা, ব্যর্থতা, না (ডিফল্ট) (always, on-failure, no (default))
restart: unless-stopped
মাউন্ট হোস্ট পাথ বা নাম ভলিউম, একটি পরিষেবার উপ-বিকল্প হিসাবে নির্দিষ্ট করা হয়
db:
image: postgres:latest
volumes:
- "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
- "dbdata:/var/lib/postgresql/data"
volumes:
dbdata: