Docker Compose িদেয় ওেয়ব ডেভলপেমন্ট — সহজ বাংলা eBook সূিচপত্র 1. এই বই কার জন্য , কীভােব পড়েবন 2. কােনকশন পুল ও ডাটােবস সংেযাগ—সহজ ব্য াখ্য া 3. Docker ও Docker Compose: দ্রু ত পিরিচিত 4. সা ভস, পাট , নটওয়াক —িভতেরর কাজকম 5. .env ও পিরেবশ ভিরেয়বল—কনিফগ আলাদা রাখার কৗশল 6. depends_on ও সা ভস স্ট াট -অড ার—ক্র ্য াশ এড়ােনার উপায় 7. ভ লউম ও ডটা পা স েস্ট ন্স — ডটা িনরাপেদ রাখুন 8. WordPress, MySQL ও PostgreSQL—ব্য বহার ও সীমাবদ্ধ তা 9. container_name, নমেস্প স ও কন ক্ট — সরা অনুশীলন 10. একািধক Compose ফাইল ও মাইেক্র াসা ভস নটওয়াক 11. Dockerfile থেক িবল্ড , িরিবল্ড ও মাল্টি - স্ট জ ধারণা 12. CMD/ENTRYPOINT ওভাররাইড—কখন ও কীভােব 13. ডভ, স্ট িজং, প্র াড—িতন পিরেবেশ কনিফগ আলাদা করা 14. সিকউিরটি বস্ট প্র ্য াকটিস— পাট এক্স েপাজ, সেক্র ট, আপেডট 15. িডবািগং ও ট্র াবলশু টিং—লগ, িরস্ট াট প ল স, িরিবল্ড 16. হােত-কলেম: Node.js + MongoDB Compose উদাহরণ 17. হােত-কলেম: Laravel + Nginx + PHP ‑ FPM Compose চ 18. চক লস্ট , টমেপ্ল ট ও সাধারণ ভুলগু েলা 19. পিরিশষ্ট : ছাট্ট গ্ল সাির, কমান্ড িচটিশট 1) এই বই কার জন্য , কীভােব পড়েবন কার জন্য : যেকােনা ওেয়ব ডেভলপার/ ডভঅপস িযিন Docker Compose িদেয় লাকাল বা প্র াডাকশন সটআপ গু িছেয় করেত চান। কীভােব পড়েবন: ● প্র থেম 2–7 অধ্য ায় পেড় ব সক পিরষ্ক ার করু ন। ● 8–12 অধ্য ােয় বস্ট প্র ্য াকটিস ও কনিফগ প্য াটান িশখুন। ● 16–17 অধ্য ােয় হােত-কলেম উদাহরণ চা লেয় দখুন। িক িশখেবন: পাট ও নটওয়াক , .env ফাইল, স্ট াট -অড ার, ভ লউম, সিকউিরটি, িবল্ড /িরিবল্ড —সবিকছ ু র সহজ বাংলা গাইড। Key Takeaways: ● কনিফগ কাড থেক আলাদা রাখুন। ● ডাটােবস পাট অকারেণ বাইের এক্স েপাজ করেবন না। ● depends_on ব্য বহার কের সা ভস স্ট াট -অড ার িঠক করু ন। 2) কােনকশন পুল ও ডাটােবস সংেযাগ—সহজ ব্য াখ্য া কােনকশন পুল কী? ● ডাটােবেস একািধক িরেকােয়স্ট এেল বারবার নতুন কােনকশন না কের এক সট ওেপন কােনকশন িরইউজ করা। ● অ্য াপ চালু থাকা পয ন্ত কােনকশন সাধারণত খালা থােক; ওয়াক ার/প্র েসস বন্ধ হেল কােনকশনও বন্ধ হয়। আচরণ কন আলাদা হেত পাের? ● আপিন কান ডাটােবস/লাইে ির (MySQL/PostgreSQL/Mongo + ড্র াইভার) ব্য বহার করেছন, অ্য াপ কীভােব লখা—তার উপর িনভ র কের। সং প্ত টিপস: ● কােনকশন পুল কনিফগ (min/max, idle timeout) আপনার লাড অনুযায়ী টিউন করু ন। 3) Docker ও Docker Compose: দ্রু ত পিরিচিত ● Docker : অ্য াপ চালােনার জন্য লাইটওেয়ট কেন্ট ইনার। ● Compose : একািধক সা ভস (web, db, cache) এক YAML ফাইেল িডফাইন কের একসােথ চালােনা। মৗ লক কমান্ড : ● চালু: docker compose up -d ● বন্ধ : docker compose down ● লগ: docker compose logs -f ● িরিবল্ড সহ: docker compose up --build -d 4) সা ভস, পাট , নটওয়াক —িভতেরর কাজকম পাট ম্য ািপং: হাস্ট :কেন্ট ইনার web: ports: - "8080:80" # বাইের 8080 → ভতের 80 নটওয়াক : একই Compose ‑ এর সা ভসগু েলা িনেজেদর মেধ্য অভ্য ন্ত রীণ নটওয়ােক কথা বেল; ভতের পাট এক্স েপাজ না কেরও সা ভস- নম িদেয় িরচ করা যায় ( যমন db:5432)। সরা অনুশীলন: ● ডাটােবস পাট ( যমন 5432, 3306) অকারেণ বাইের এক্স েপাজ করেবন না । ● বাইের এেক্স স দরকার হেল তেবই হাস্ট :কেন্ট ইনার ম্য ািপং িদন; না হেল কবল অভ্য ন্ত রীণ এক্স েপাজ (expose:) বা িডফল্ট ই যেথষ্ট । 5) .env ও পিরেবশ ভিরেয়বল—কনিফগ আলাদা রাখার কৗশল Compose .env ফাইল থেক ভিরেয়বল পড়েত পাের। কনিফগ আলাদাভােব রাখেল কাড স্প শ না কেরই সটিং বদলােনা যায়। উদাহরণ: # .env EXTERNAL_PORT=8080 INTERNAL_PORT=8080 web: ports: - "${EXTERNAL_PORT}:${INTERNAL_PORT}" environment: - NODE_ENV=development ভােলা িদক: ● ডভ/ স্ট িজং/প্র ড—িতন পিরেবেশ আলাদা .env ব্য বহার করু ন। ● CI/CD ‑ ত সেক্র ট .env সাভ াের রাখুন; িগেট কিমট করেবন না। 6) depends_on ও সা ভস স্ট াট -অড ার—ক্র ্য াশ এড়ােনার উপায় অ্য াপ সাভ ার সাধারণত স্ট ােট ই িডিব কােনক্ট করেত চায়। িডিব কাল্ড -স্ট ােট দির করেল অ্য াপ ক্র ্য াশ করেত পাের। db: image: postgres:16 api: build: . depends_on: - db ফলাফল: db রিড না হওয়া পয ন্ত api স্ট াট করেব না—স্ট াট -অড ার িঠক থােক। 7) ভ লউম ও ডটা পা স েস্ট ন্স — ডটা িনরাপেদ রাখুন ডাটােবস কেন্ট ইনার িড লট হেলও ডটা যােত থােক, তাই ভ লউম দরকার। db: image: postgres:16 volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: টিপস: ব্য াকআপ িনন; ভ লউম নামকরণ পিরষ্ক ার করু ন। 8) WordPress, MySQL ও PostgreSQL—ব্য বহার ও সীমাবদ্ধ তা ● িডফল্ট ভােব WordPress → MySQL/MariaDB ব্য বহার কের। ● PostgreSQL ‑ এ চালােত অিতিরক্ত প্ল াগইন/ড্র াইভােরর ঝােমলা হয়; নবীনেদর জন্য সুপািরশ নয়। ● সম্প ল সটআপ চাইেল WordPress + MySQL বেছ িনন। সিকউিরটি টিপ: িডিব পাট উন্ম ু ক্ত করেবন না; WP কেন্ট ইনার থেক সা ভস- নম db িদেয় কােনক্ট করু ন। 9) container_name, নমে স ও কন ক্ট — সরা অনুশীলন ● Compose িনেজ নাম জনােরট করু ক—এেত কন ক্ট কম হয়। ● খুব জরু ির না হেল container_name: সট করেবন না। 10) একািধক Compose ফাইল ও মাইেক্র াসা ভস নটওয়াক একই মিশেন অেনক প্র েজক্ট চালােল প্র িতটি Compose িনেজর নটওয়াক বানায়। আলাদা Compose ‑ এর সা ভসেক যুক্ত করেত চাইেল এক্স টান াল নটওয়াক ব্য বহার করু ন। docker network create shared_net # project ‑ A compose.yml services: api: image: org/api networks: - shared_net networks: shared_net: external: true # project ‑ B compose.yml services: web: image: org/web networks: - shared_net networks: shared_net: external: true 11) Dockerfile থেক িবল্ড , িরিবল্ড ও মাল্টি - স্ট জ ধারণা ● Compose ‑ এ িবল্ড ব্ল ক: services: api: build: context: . dockerfile: Dockerfile ● সাস ফাইল বদলােল docker compose up --build -d িদন—ইেমজ িরিবল্ড হেব। ● মাল্টি - স্ট জ িবল্ড : ডভ/প্র ড আলাদা লয়ার, ছাট ইেমজ, দ্রু ত িডপ্ল য়। 12) CMD/ENTRYPOINT ওভাররাইড—কখন ও কীভােব Dockerfile ‑ এর CMD আপিন Compose ‑ এ ওভাররাইড করেত পােরন: services: api: build: . command: ["yarn","start"] প্ট যাগ করেল প্য ােকজ ফাইল আপেডট করু ন; িরিবল্ড িদেত ভুলেবন না। 13) ডভ, স্ট িজং, প্র াড—িতন পিরেবেশ কনিফগ আলাদা করা ● আলাদা .env ফাইল: .env.development, .env.staging, .env.production ● আলাদা Compose ফাইলও ব্য বহার করেত পােরন: compose.dev.yml, compose.prod.yml docker compose -f compose.yml -f compose.prod.yml up -d 14) সিকউিরটি বস্ট প্র ্য াকটিস— পাট এক্স েপাজ, সেক্র ট, আপেডট ● ডাটােবস পাট বাইের খুলেবন না; দরকার হেল ফায়ারওয়াল/আইিপ হায়াইট লস্ট । ● সেক্র ট .env িগেট কিমট নয়; CI/CD সেক্র ট স্ট ার ব্য বহার করু ন। ● অিফ সয়াল ইেমজ পছন্দ করু ন; সিকউিরটি আপেডট পেত সুিবধা। 15) িডবািগং ও ট্র াবলশু টিং—লগ, িরস্ট াট প ল স, িরিবল্ড ● লগ দখুন: docker compose logs -f api ● িরস্ট াট প ল স: restart: unless-stopped ● কনিফগ পাল্ট ােল প্র েয়াজেন িরিবল্ড : up --build ● কন ক্ট এড়ােত ডুিপ্ল েকট সা ভস ‑ নম, এক ফাল্ড াের একািধক সম্প ক হীন compose.yml এিড়েয় চলুন। 16) হােত-কলেম: Node.js + MongoDB Compose উদাহরণ services: mongo: image: mongo:7 volumes: - mongodata:/data/db api: build: ./api env_file: .env depends_on: - mongo ports: - "${EXTERNAL_PORT}:${INTERNAL_PORT}" volumes: mongodata: কীভােব কাজ কের: ● api স্ট াট হওয়ার আেগ mongo রিড হয়। ● পাট .env থেক আেস— কাড ছ ঁ ায়া লােগনা। চক লস্ট : ● MONGO_URL=mongodb://mongo:27017/app ● হােস্ট িডিব পাট এক্স েপাজ নয়—িনরাপদ। 17) হােত-কলেম: Laravel + Nginx + PHP ‑ FPM Compose চ services: app: build: ./php-fpm volumes: - ./:/var/www/html web: image: nginx:alpine depends_on: - app ports: - "8080:80" volumes: - ./.nginx/default.conf:/etc/nginx/conf.d/default.conf - ./:/var/www/html db: image: mysql:8 environment: - MYSQL_DATABASE=app - MYSQL_USER=app - MYSQL_PASSWORD=secret - MYSQL_ROOT_PASSWORD=secret volumes: - mysqldata:/var/lib/mysql volumes: mysqldata: টিপস: ● Laravel .env ‑ এ DB_HOST=db, পাট ম্য ািপং না খুেলও িভতের কােনক্ট হেব। ● অিফ সয়াল ইেমজ রাখুন; এক্স েটনশন দরকার হেল িনেজর Dockerfile ‑ এ যাগ করু ন। 18) চক লস্ট , টমে ট ও সাধারণ ভুলগু েলা চক লস্ট : ● িডিব পাট বাইের এক্স েপাজ নয় ● .env িগট ‑ এ কিমট নয় ● depends_on সট ● ভ লউম যাগ করা ● up --build প্র েয়াজেন চালােনা ● container_name প্র েয়াজন ছাড়া ব্য বহার নয় সাধারণ ভুল: ● এক ফাল্ড াের সম্প ক হীন একািধক compose.yml রাখা → সা ভস নম কন ক্ট । ● PostgreSQL িদেয় সরাসির WordPress চালােত িগেয় ঝােমলা—MySQL িনন। ● নটওয়াক জ না কের আলাদা Compose ‑ এর সা ভস লঙ্ক করার চষ্ট া। টমে ট স্ট াট ার: name: myapp services: web: build: . ports: - "${EXTERNAL_PORT:-8080}:${INTERNAL_PORT:-8080}" env_file: .env depends_on: - db db: image: postgres:16 environment: - POSTGRES_DB=app - POSTGRES_USER=app - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: 19) পিরিশষ্ট : ছাট্ট গ্ল সাির, কমান্ড িচটিশট গ্ল সাির: ● Compose : YAML িদেয় মাল্টি ‑ সা ভস রান টুল। ● ভ লউম : কেন্ট ইনােরর বাইের ডটা স্ট ােরজ। ● নটওয়াক : সা ভসগু েলার অভ্য ন্ত রীণ যাগােযাগ ব্য বস্থ া। িচটিশট: # চালু/বন্ধ docker compose up -d docker compose down # লগ docker compose logs -f web # িরিবল্ড সহ চালু docker compose up --build -d # নটওয়াক তির docker network create shared_net সারাংশ এই বইেত আপিন িশখেলন কীভােব Docker Compose িদেয় সম্প ূ ণ ওেয়ব স্ট ্য াক সাজােবন—সা ভস, পাট , নটওয়াক , .env, ভ লউম, স্ট াট -অড ার, সিকউিরটি, িরিবল্ড —সবিকছ ু সহজ বাংলায়। হােত-কলেম উদাহরণ ও চক লস্ট িদেয় আপনার ডেভলপেমন্ট ও িডপ্ল য়েমন্ট আেরা গু িছেয়, িনরাপদ ও দ্রু ত হেব।