REFACTOR API gateway fix 3
This commit is contained in:
149
check.sh
Executable file
149
check.sh
Executable file
@@ -0,0 +1,149 @@
|
||||
#!/bin/bash
|
||||
# Environment Variable Diagnostic Script
|
||||
# This script helps identify where environment variables are getting lost
|
||||
|
||||
set -e
|
||||
|
||||
echo "🔍 Environment Variable Diagnostic Script"
|
||||
echo "=========================================="
|
||||
|
||||
# Check if .env file exists and contains JWT settings
|
||||
echo "📋 Step 1: Checking .env file..."
|
||||
if [ -f ".env" ]; then
|
||||
echo "✅ .env file exists"
|
||||
if grep -q "JWT_SECRET_KEY" .env; then
|
||||
JWT_VALUE=$(grep "JWT_SECRET_KEY" .env | cut -d'=' -f2-)
|
||||
echo "✅ JWT_SECRET_KEY found in .env: ${JWT_VALUE:0:30}..."
|
||||
else
|
||||
echo "❌ JWT_SECRET_KEY not found in .env"
|
||||
fi
|
||||
else
|
||||
echo "❌ .env file does not exist"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Check docker-compose.yml configuration
|
||||
echo "📋 Step 2: Checking docker-compose.yml..."
|
||||
if grep -A 20 "auth-service:" docker-compose.yml | grep -q "JWT_SECRET_KEY"; then
|
||||
echo "✅ auth-service has JWT_SECRET_KEY in docker-compose.yml"
|
||||
else
|
||||
echo "❌ auth-service missing JWT_SECRET_KEY in docker-compose.yml"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Check if services are running
|
||||
echo "📋 Step 3: Checking running services..."
|
||||
AUTH_RUNNING=$(docker-compose ps auth-service | grep -c "Up" || echo "0")
|
||||
GATEWAY_RUNNING=$(docker-compose ps gateway | grep -c "Up" || echo "0")
|
||||
|
||||
echo "Auth Service Running: $AUTH_RUNNING"
|
||||
echo "Gateway Running: $GATEWAY_RUNNING"
|
||||
|
||||
echo ""
|
||||
|
||||
# Check environment at container startup
|
||||
echo "📋 Step 4: Checking container environment at startup..."
|
||||
echo "Starting fresh auth-service container..."
|
||||
|
||||
# Stop and start auth service
|
||||
docker-compose stop auth-service
|
||||
sleep 2
|
||||
|
||||
# Start auth service and immediately check environment
|
||||
echo "Starting auth-service..."
|
||||
docker-compose up -d auth-service
|
||||
|
||||
# Wait a moment for startup
|
||||
sleep 3
|
||||
|
||||
echo "Checking environment immediately after startup..."
|
||||
STARTUP_ENV=$(docker-compose exec -T auth-service env | grep JWT_SECRET_KEY || echo "NOT_SET")
|
||||
echo "Startup Environment: $STARTUP_ENV"
|
||||
|
||||
# Wait a bit more and check again
|
||||
sleep 5
|
||||
echo "Checking environment after 5 seconds..."
|
||||
AFTER_STARTUP=$(docker-compose exec -T auth-service env | grep JWT_SECRET_KEY || echo "NOT_SET")
|
||||
echo "After Startup: $AFTER_STARTUP"
|
||||
|
||||
echo ""
|
||||
|
||||
# Check if the application is overriding environment variables
|
||||
echo "📋 Step 5: Checking application configuration loading..."
|
||||
|
||||
# Create a temporary script to check Python environment loading
|
||||
cat > /tmp/check_env.py << 'EOF'
|
||||
import os
|
||||
import sys
|
||||
sys.path.insert(0, '/app')
|
||||
|
||||
print("=== Python Environment Check ===")
|
||||
print(f"JWT_SECRET_KEY from os.getenv: {os.getenv('JWT_SECRET_KEY', 'NOT_SET')}")
|
||||
|
||||
try:
|
||||
from app.core.config import settings
|
||||
print(f"JWT_SECRET_KEY from settings: {getattr(settings, 'JWT_SECRET_KEY', 'NOT_SET')}")
|
||||
|
||||
# Check if settings inherits from base
|
||||
try:
|
||||
from shared.config.base import BaseServiceSettings
|
||||
base_settings = BaseServiceSettings()
|
||||
print(f"JWT_SECRET_KEY from base settings: {getattr(base_settings, 'JWT_SECRET_KEY', 'NOT_SET')}")
|
||||
except Exception as e:
|
||||
print(f"Error loading base settings: {e}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error loading auth settings: {e}")
|
||||
|
||||
print("=== Raw Environment Variables ===")
|
||||
for key, value in sorted(os.environ.items()):
|
||||
if 'JWT' in key or 'SECRET' in key:
|
||||
print(f"{key}={value[:30]}..." if len(value) > 30 else f"{key}={value}")
|
||||
EOF
|
||||
|
||||
# Copy the script into the container and run it
|
||||
docker cp /tmp/check_env.py "$(docker-compose ps -q auth-service):/tmp/check_env.py"
|
||||
echo "Running Python environment check..."
|
||||
docker-compose exec -T auth-service python /tmp/check_env.py
|
||||
|
||||
echo ""
|
||||
|
||||
# Check if there are any startup scripts or entrypoints modifying environment
|
||||
echo "📋 Step 6: Checking container startup process..."
|
||||
echo "Container entrypoint:"
|
||||
docker-compose exec -T auth-service cat /usr/local/bin/docker-entrypoint.sh 2>/dev/null || echo "No entrypoint script found"
|
||||
|
||||
echo ""
|
||||
echo "Docker image environment:"
|
||||
docker-compose exec -T auth-service printenv | grep JWT || echo "No JWT variables in container environment"
|
||||
|
||||
echo ""
|
||||
|
||||
# Check application logs for any environment variable issues
|
||||
echo "📋 Step 7: Checking application logs for environment issues..."
|
||||
echo "Recent auth-service logs:"
|
||||
docker-compose logs --tail=20 auth-service | grep -i -E "(jwt|secret|env|config)" || echo "No relevant logs found"
|
||||
|
||||
echo ""
|
||||
|
||||
# Final diagnosis
|
||||
echo "📋 Step 8: Diagnosis Summary"
|
||||
echo "=============================="
|
||||
|
||||
if [ "$STARTUP_ENV" = "NOT_SET" ]; then
|
||||
echo "❌ ISSUE: JWT_SECRET_KEY is not being passed to the container"
|
||||
echo "🔧 SOLUTION: Fix docker-compose.yml environment variables"
|
||||
elif [ "$STARTUP_ENV" != "NOT_SET" ] && [ "$AFTER_STARTUP" = "NOT_SET" ]; then
|
||||
echo "❌ ISSUE: JWT_SECRET_KEY is present at startup but disappears"
|
||||
echo "🔧 SOLUTION: Check application configuration loading"
|
||||
else
|
||||
echo "✅ Environment variables appear to be stable"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🏁 Diagnostic complete!"
|
||||
|
||||
# Cleanup
|
||||
rm -f /tmp/check_env.py
|
||||
Reference in New Issue
Block a user