FROM python:3.11-slim WORKDIR /app # Install dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy application COPY . . # Generate JWT keys if not present RUN python -c "from cryptography.hazmat.primitives import serialization; from cryptography.hazmat.primitives.asymmetric import rsa; from cryptography.hazmat.backends import default_backend; import os; \ os.makedirs('/app/keys', exist_ok=True); \ private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048, backend=default_backend()); \ open('/app/keys/private.pem', 'wb').write(private_key.private_bytes(encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption())); \ open('/app/keys/public.pem', 'wb').write(private_key.public_key().public_bytes(encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo)); \ print('JWT keys generated')" ENV PORT=8080 ENV HOST=0.0.0.0 ENV JWT_PRIVATE_KEY_PATH=/app/keys/private.pem ENV JWT_PUBLIC_KEY_PATH=/app/keys/public.pem ENV REDIS_HOST=localhost ENV REDIS_PORT=6379 EXPOSE 8080 CMD ["python", "main.py"]