From d4f202f204f23424b04b20a2cd59fad48e484de5 Mon Sep 17 00:00:00 2001 From: rorapp Date: Wed, 5 Mar 2025 15:21:52 +0100 Subject: [PATCH] add readme to env folder --- apps/frontend/src | 2 +- env/README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 env/README.md diff --git a/apps/frontend/src b/apps/frontend/src index b5ed737..49027dc 160000 --- a/apps/frontend/src +++ b/apps/frontend/src @@ -1 +1 @@ -Subproject commit b5ed737d10ad899d46b7c53533654280b59ef35e +Subproject commit 49027dc8ea62b2895732089e0e0cf73f99668caf diff --git a/env/README.md b/env/README.md new file mode 100644 index 0000000..f5c5fad --- /dev/null +++ b/env/README.md @@ -0,0 +1,50 @@ +# 🔧 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.`** (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.` 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** +```sh +/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 +