mindboost-infrastructure/env
Robert Rapp d4f202f204 add readme to env folder 2025-03-05 15:21:52 +01:00
..
development update env stucture for frontend deployment 2025-03-04 18:18:21 +01:00
production create all .env.files but without content so far 2025-02-18 17:36:43 +01:00
staging create all .env.files but without content so far 2025-02-18 17:36:43 +01:00
.env.all added some fallback values 2025-03-05 15:19:42 +01:00
README.md add readme to env folder 2025-03-05 15:21:52 +01:00

README.md

🔧 Environment Configuration Guide

🌍 Overview

This project uses environment variables to manage configuration across different environments (development, staging, production, etc.). These variables are loaded from .env files and can be overridden at multiple levels.


📌 Environment Variable Priority (Lowest to Highest)

🔢 Priority 📄 Source 🔍 Description
1 Fallback Values hardcoded defaults Used only if no other configuration is provided
2 Global Defaults .env.all Shared settings for all services
3 Service-Specific Overrides .env.backend, .env.proxy, etc. Overrides .env.all with service-specific values
4 Shell Environment Variables export VAR=value before running Takes precedence over .env files
5 CLI Overrides docker compose --env-file or -e VAR=value Highest priority (for temporary overrides)

🔄 Overwriting Behavior

  • 🏗 Variables defined in .env.all override fallback values.
  • 🏗 Variables defined in .env.<service> (e.g., .env.backend) override .env.all.
  • 🔧 Manually exported environment variables in the shell take priority over .env files.
  • 🚀 Variables passed via CLI (--env-file or -e VAR=value) override everything.

🚀 Best Practices

✔️ Use .env.all for global configurations (e.g., ENVIRONMENT=development, INFRASTRUCTURE_LABEL=myinfra).
✔️ Use .env.<service> for service-specific configurations (e.g., .env.backend for Laravel, .env.database for MariaDB).
✔️ If needed, manually override variables in the shell using export VAR=value.
✔️ Use CLI --env-file for temporary overrides in testing/debugging scenarios.


🏗 Example File Structure

/env/
  ├── .env.all                  # Global default variables
  ├── development/
  │   ├── .env.backend          # Backend service config for development
  │   ├── .env.database         # Database config for development
  │   ├── .env.proxy            # Proxy config for development
  ├── staging/
  │   ├── .env.backend          # Backend service config for staging
  │   ├── .env.database         # Database config for staging
  ├── production/
  │   ├── .env.backend          # Backend service config for production
  │   ├── .env.database         # Database config for production