From fdab446aa496e0bf950ef7e1f02302de312e6807 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 30 Jan 2026 17:25:49 +0100 Subject: [PATCH] docs: Fix .env-Deployment-Pitfall - restart vs up -d docker compose restart liest .env NICHT neu ein, weil die environment:-Section in docker-compose.yml ${VAR:-default} Syntax nutzt, die nur bei docker compose up ausgewertet wird. Korrigiert in copilot-instructions.md und ZERO_DOWNTIME_CHANGES.md. Co-Authored-By: Claude Opus 4.5 --- copilot-instructions.md | 10 +++++++++- docs/ZERO_DOWNTIME_CHANGES.md | 18 +++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/copilot-instructions.md b/copilot-instructions.md index ec76a49..45f96ec 100644 --- a/copilot-instructions.md +++ b/copilot-instructions.md @@ -2001,11 +2001,19 @@ docker logs trading-bot-v4 | grep "Server starting" | head -1 |------------|--------|----------|------| | Documentation (`.md`) | **NONE** | 0s | Just commit and push | | Workflows (`.json`, `.pinescript`) | **NONE** | 0s | Import manually to TradingView/n8n | -| ENV variables (`.env`) | **RESTART** | 5-10s | `docker compose restart trading-bot` | +| ENV variables (`.env`) | **RECREATE** | 5-10s | `docker compose up -d trading-bot` (NOT `restart` — see below) | | Database schema | **MIGRATE + RESTART** | 10-15s | `prisma migrate + restart` | | Code (`.ts`, `.tsx`, `.js`) | **REBUILD** | 40-70s | TypeScript must recompile | | Dependencies (`package.json`) | **REBUILD** | 40-70s | npm install required | +**⚠️ PITFALL: `docker compose restart` liest .env NICHT neu ein (Bug #90, Jan 30 2026)** +- `docker-compose.yml` nutzt `environment:` mit `${VAR:-default}` Syntax +- Diese Variablen werden nur bei `docker compose up` ausgewertet, NICHT bei `restart` +- `restart` startet den Container mit den **alten** Environment-Variablen neu +- **Richtig:** `docker compose up -d trading-bot` → recreated den Container mit neuen Werten +- **Falsch:** `docker compose restart trading-bot` → alte .env-Werte bleiben aktiv +- **Verifizierung:** `docker exec trading-bot-v4 env | grep VARIABLE` zeigt die tatsächlich aktiven Werte + **Smart Batching Strategy:** - **DON'T:** Rebuild after every single code change (6× rebuilds = 6 minutes downtime) - **DO:** Batch related changes together (6 fixes → 1 rebuild = 50 seconds total) diff --git a/docs/ZERO_DOWNTIME_CHANGES.md b/docs/ZERO_DOWNTIME_CHANGES.md index 06b7e14..9e53fa6 100644 --- a/docs/ZERO_DOWNTIME_CHANGES.md +++ b/docs/ZERO_DOWNTIME_CHANGES.md @@ -25,10 +25,11 @@ - **Example:** parse_signal_enhanced.json, indicator scripts ### 4. **Environment Variables** (`.env` file) -- **Method:** Edit `.env` → restart container only -- **Command:** `docker compose restart trading-bot` +- **Method:** Edit `.env` → recreate container (NOT restart!) +- **Command:** `docker compose up -d trading-bot` - **Time:** 5-10 seconds (vs 40-70 seconds for rebuild) - **Example:** Changing `MIN_SIGNAL_QUALITY_SCORE=91` +- **⚠️ PITFALL:** `docker compose restart` liest .env NICHT neu ein! Die `environment:` Section in docker-compose.yml nutzt `${VAR:-default}` Syntax, die nur bei `up` ausgewertet wird. ### 5. **Database Schema** (`prisma/schema.prisma`) - **Method:** `npx prisma migrate dev` → `npx prisma generate` → restart @@ -43,17 +44,20 @@ --- -## ⚠️ Changes That Need Container RESTART Only (10 seconds) +## ⚠️ Changes That Need Container RECREATE Only (10 seconds) ### 1. **Environment Variables** ```bash # Edit .env file vim /home/icke/traderv4/.env -# Restart container (NOT rebuild) -docker compose restart trading-bot +# Recreate container (NOT restart! restart does NOT re-read .env) +docker compose up -d trading-bot -# Verify +# Verify env vars are active +docker exec trading-bot-v4 env | grep VARIABLE_NAME + +# Check logs docker logs --tail=30 trading-bot-v4 ``` @@ -112,7 +116,7 @@ cd /home/icke/traderv4 && docker compose build trading-bot > /tmp/docker-build-l |------------|-----------------|----------|---------| | **Documentation (`.md`)** | None | 0s | `git commit && git push` | | **Workflows (`.json`, `.pinescript`)** | Manual import | 0s | Update in TradingView/n8n | -| **ENV variables (`.env`)** | Restart | 5-10s | `docker compose restart trading-bot` | +| **ENV variables (`.env`)** | Recreate | 5-10s | `docker compose up -d trading-bot` (NOT restart!) | | **Database schema** | Migrate + Restart | 10-15s | `prisma migrate + restart` | | **Code changes (`.ts`, `.tsx`)** | **REBUILD** | 40-70s | `docker compose build + restart` | | **Dependencies (`package.json`)** | **REBUILD** | 40-70s | `docker compose build + restart` |