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 <noreply@anthropic.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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` |
|
||||
|
||||
Reference in New Issue
Block a user