সরাসরি প্রধান সামগ্রীতে চলে যান

Docker Env in Separate File Bangla


১️⃣ .env ফাইল ব্যবহার করা (default)

  1. প্রকল্প root-এ .env ফাইল বানাও উদাহরণ:
# .env
SPRING_PROFILES_ACTIVE=docker
SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/dbname
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=postgres
SPRING_REDIS_HOST=localhost
SPRING_REDIS_PORT=6379
  1. docker-compose.yml-এ ব্যবহার করা Compose auto-load করে .env ফাইল:
services:
  app:
    build: .
    container_name: blogger-app
    environment:
      SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
      SPRING_DATASOURCE_URL: ${SPRING_DATASOURCE_URL}
      SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME}
      SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
      SPRING_REDIS_HOST: ${SPRING_REDIS_HOST}
      SPRING_REDIS_PORT: ${SPRING_REDIS_PORT}

.env ফাইল ব্যবহার করলে Compose auto-load করে এবং secret বা config আলাদা রাখা যায়।


২️⃣ Custom environment file ব্যবহার করা

.env ছাড়া তুমি চাইলে custom env ফাইল ব্যবহার করতে পারো। ধরো docker.env নামে ফাইল:

# docker.env
SPRING_PROFILES_ACTIVE=docker
SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/practice_spring_boot_jdk21
...

docker-compose.yml-এ link করো:

services:
  app:
    build: .
    container_name: blogger-app
    env_file:
      - docker.env

এখানে env_file ব্যবহার করলে Compose container-এ সব variable auto inject হবে। .env ফাইলের মতো ${VAR_NAME} substitution দরকার নেই।


৩️⃣ Extra Tips

  • env_file multiple files নিতে পারে:
env_file:
  - common.env
  - dev.env
  • যদি local development আর production আলাদা environment থাকে, আলাদা env file রাখো:

    • .env.development
    • .env.production
    • তারপর docker-compose --env-file .env.production up -d
  • Secret/Password-গুলো production এ কখনো git এ commit করো না, .gitignore ব্যবহার করো।


মন্তব্যসমূহ