DockerIntermediate
Environment Variables ও .env
ENV, ARG, docker run -e, compose environment/env_file, .env — configuration management — বাংলায়।
15টি অংশবাংলা ভাষায়
কোডের বাইরে রাখতে হয় config — API কী, ডাটাবেস পাসওয়ার্ড, port। Environment variables দিয়ে সেটি container-এ ঢোকে, কোডে জানে না।
docker run -e
CLI দিয়ে envbash
bash
docker run -d \
--name api \
-e PORT=4000 \
-e DB_URL=mongodb://mongo:27017/blog \
-e SECRET_KEY=mysecret123 \
my-apiDockerfile-এ ENV
Dockerfiledockerfile
dockerfile
FROM node:20-alpine
WORKDIR /app
COPY . .
# image-এ default env
ENV NODE_ENV=production \
PORT=3000
CMD ["node", "app.js"]docker run -e দেওয়া value Dockerfile-এর ENV-কে override করে।
Compose-এ environment vs env_file
compose.ymlyaml
yaml
services:
api:
build: .
environment:
- NODE_ENV=production # সরাসরি
- PORT=4000
env_file:
- .env # file থেকে সব
.env file
.env (এর আগেই $PWD)text
text
DATABASE_URL=mongodb://mongo:27017/blog
JWT_SECRET=supersecret
REDIS_URL=redis://redis:6379
এই .env file .gitignore-এ রাখুন — secrets কখনো repository-তে commit করা উচিত নয়।
ENV vs ARG
| বিষয় | ENV | ARG |
|---|---|---|
| Scope | runtime-এও থাকে | শুধু build-এর সময় |
| কার্য | app process-এ value যায় | build-time config (version ইত্যাদি) |
| Compose | environment:, env_file: | build.args: |
| Dockerfile | ENV K=V | ARG K=V |
ARG ব্যবহারdockerfile
dockerfile
ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-alpine
# build সময়: docker build --build-arg NODE_VERSION=22 .Secrets কখনো image-এ না
Dockerfile-এ ENV দিয়ে secret লিখলে তা image layer-এ থেকে যায় — docker history দিয়ে দেখা যায়! Production secret-এর জন্য use Docker secrets (Swarm), env file (compose), বা cloud secret manager (AWS Secrets Manager ইত্যাদি)।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।