chore: centralize docker-compose variables into .env
All checks were successful
Deploy to Staging / Build Images (push) Successful in 39s
Deploy to Staging / Deploy to Staging (push) Successful in 52s
Deploy to Staging / Verify Staging (push) Successful in 9s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped

Stripe Price IDs were hardcoded and duplicated across 4 compose files.
Log levels were hardcoded per-overlay instead of using generate-log-config.sh.
This refactors all environment-specific variables into a single .env file
that CI/CD generates from Gitea repo variables + generate-log-config.sh.

- Add .env.example template with documented variables
- Replace hardcoded values with ${VAR:-default} substitution in base compose
- Simplify prod overlay from 90 to 32 lines (remove redundant env blocks)
- Add YAML anchors to blue-green overlay (eliminate blue/green duplication)
- Remove redundant OCR env block from staging overlay
- Change generate-log-config.sh to output to stdout (pipe into .env)
- Update staging/production CI/CD to generate .env with Stripe + log vars
- Remove dangerous pk_live_ default from VITE_STRIPE_PUBLISHABLE_KEY

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Eric Gullickson
2026-02-16 19:57:36 -06:00
parent 07c3d8511d
commit 853a075e8b
8 changed files with 158 additions and 237 deletions

View File

@@ -1,11 +1,12 @@
#!/bin/bash
# generate-log-config.sh - Generate .env.logging from LOG_LEVEL
# Maps a single LOG_LEVEL environment variable to per-container settings
# generate-log-config.sh - Generate log-level environment variables
# Maps a single LOG_LEVEL to per-container settings and writes to stdout
#
# Usage: ./generate-log-config.sh [LOG_LEVEL]
# LOG_LEVEL: DEBUG, INFO, WARN, or ERROR (default: INFO)
#
# Output: Creates .env.logging file with container-specific log settings
# Output: Log configuration variables on stdout (append to .env)
# Example: ./generate-log-config.sh INFO >> .env
#
# Exit codes:
# 0 - Configuration generated successfully
@@ -43,27 +44,13 @@ case "$LOG_LEVEL" in
ERROR) REDIS_LOGLEVEL="warning" ;;
esac
# Generate .env.logging file
cat > .env.logging << EOF
# Generated by generate-log-config.sh - DO NOT EDIT MANUALLY
# Regenerate with: ./scripts/ci/generate-log-config.sh $LOG_LEVEL
LOG_LEVEL=$LOG_LEVEL
# Output log configuration to stdout
cat << EOF
# Backend/OCR (Pino)
# Log levels (generated by generate-log-config.sh $LOG_LEVEL)
BACKEND_LOG_LEVEL=$LOG_LEVEL_LOWER
# Frontend (Vite)
VITE_LOG_LEVEL=$LOG_LEVEL_LOWER
# PostgreSQL
TRAEFIK_LOG_LEVEL=$LOG_LEVEL
POSTGRES_LOG_STATEMENT=$POSTGRES_LOG_STATEMENT
POSTGRES_LOG_MIN_DURATION=$POSTGRES_LOG_MIN_DURATION
# Redis
REDIS_LOGLEVEL=$REDIS_LOGLEVEL
# Traefik
TRAEFIK_LOG_LEVEL=$LOG_LEVEL
EOF
echo "Generated .env.logging with LOG_LEVEL=$LOG_LEVEL"