Environment Variables (এনভায়রনমেন্ট ভেরিয়েবল) ⚙️
ডকার কন্টেইনারকে ডাইনামিক এবং কনফিগারেবল করার সবচেয়ে সহজ উপায় হলো Environment Variables ব্যবহার করা। এর মাধ্যমে আপনি কোড পরিবর্তন না করেই অ্যাপ্লিকেশনের কনফিগারেশন (যেমন: ডাটাবেস ইউআরএল, এপিআই কি, বা ডেভেলপার মোড) পরিবর্তন করতে পারবেন।
১. -e ফ্ল্যাগ ব্যবহার করে ভেরিয়েবল সেট করা
কন্টেইনার রান করার সময় আপনি সরাসরি কমান্ড লাইনে ভেরিয়েবল সেট করে দিতে পারেন:
docker run -e MY_VAR=Hello nginxএকাধিক ভেরিয়েবল সেট করা:
docker run -e DB_USER=admin -e DB_PASS=secret123 mysql২. ফাইল থেকে ভেরিয়েবল লোড করা (.env files)
যখন অনেকগুলো ভেরিয়েবল থাকে, তখন বারবার কমান্ড লাইনে লিখা বিরক্তিকর এবং ঝুঁকিপূর্ণ। সেক্ষেত্রে আমরা একটি .env ফাইল ব্যবহার করি।
১. প্রথমে একটি ফাইল তৈরি করুন, নাম দিন .env:
DB_HOST=db.example.com
DB_USER=ripon
DB_PASS=mypassword২. কন্টেইনার রান করার সময় এই ফাইলটি লিঙ্ক করুন:
docker run --env-file .env my-app৩. Docker Compose-এ এনভায়রনমেন্ট
Docker Compose ফাইলে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহারের দুটি প্রধান উপায় আছে:
services:
web:
image: my-app
environment:
- APP_COLOR=blue
- DEBUG=true
# অথবা ফাইল ব্যবহার করে:
env_file:
- ./.env৪. Secrets vs Environment Variables
সব ধরনের তথ্য এনভায়রনমেন্ট ভেরিয়েবলে রাখা উচিত নয়।
- Environment Variables: সাধারণ কনফিগারেশনের জন্য ঠিক আছে (যেমন:
PORT,LOG_LEVEL)। - Docker Secrets: অত্যন্ত সংবেদনশীল তথ্যের জন্য (যেমন: পাসওয়ার্ড, প্রাইভেট কি, সার্টিফিকেট) এনভায়রনমেন্ট ভেরিয়েবলের চেয়ে Secrets বা Vault ব্যবহার করা বেশি নিরাপদ। কারণ এনভায়রনমেন্ট ভেরিয়েবলগুলো
docker inspectদিলেই দেখা যায়।
৫. Configuration Management (বেস্ট প্র্যাকটিস)
- Hardcoded বর্জন করুন: কোডের ভেতরে সরাসরি পাসওয়ার্ড বা আইপি এড্রেস লিখবেন না।
- Default Value: অ্যাপ্লিকেশনে এনভায়রনমেন্ট ভেরিয়েবলের একটি ডিফল্ট ভ্যালু রাখুন।
- .gitignore ব্যবহার করুন: কখনোই আপনার
.envফাইল গিট (Github/Gitlab)-এ পুশ করবেন না। এটি সবসময় আপনার লোকাল মেশিনে বা সিক্রেট ম্যানেজারে থাকা উচিত।
কমান্ড সামারি টেবিল
| Command | Purpose |
|---|---|
docker run -e KEY=VALUE | একটি ভেরিয়েবল সেট করে |
docker run --env-file <file> | ফাইল থেকে সব ভেরিয়েবল লোড করে |
docker exec -it <id> env | কন্টেইনারের ভেতরের সব ভেরিয়েবল দেখতে |
docker inspect <id> | কনফিগারেশন ডিটেইলসে ভেরিয়েবলগুলো দেখতে |
CAUTION
পাসওয়ার্ড বা এপিআই কি ব্যবহারের সময় কমান্ড লাইন হিস্টোরি এবং docker inspect আউটপুট নিয়ে সতর্ক থাকুন।