Compare commits
2 Commits
cdaf3d9500
...
b3426f7493
| Author | SHA1 | Date | |
|---|---|---|---|
|
b3426f7493
|
|||
|
cadc34f797
|
+3
-3
@@ -1,5 +1,5 @@
|
||||
# Use Python 3.11 slim image as base
|
||||
FROM python:3.11-slim
|
||||
# Use Python 3.13 slim image as base
|
||||
FROM python:3.13-slim
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /app
|
||||
@@ -42,7 +42,7 @@ EXPOSE 8000
|
||||
|
||||
# Health check
|
||||
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
|
||||
CMD curl -f http://localhost:8000/ || exit 1
|
||||
CMD curl -f http://localhost:8000/health || exit 1
|
||||
|
||||
# Run the application
|
||||
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
+17
@@ -14,6 +14,17 @@ from fastapi.templating import Jinja2Templates
|
||||
from pydantic import BaseModel
|
||||
from fpdf import FPDF
|
||||
|
||||
import logging
|
||||
|
||||
# Custom filter to exclude health check logs
|
||||
class HealthCheckFilter(logging.Filter):
|
||||
def filter(self, record: logging.LogRecord) -> bool:
|
||||
# Exclude health check requests from logs
|
||||
return "GET /health " not in record.getMessage()
|
||||
|
||||
# Apply the filter to Uvicorn's access logger
|
||||
logging.getLogger("uvicorn.access").addFilter(HealthCheckFilter())
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
# S3 Configuration
|
||||
@@ -464,6 +475,12 @@ async def bulk_download(filenames: str = Form(...)):
|
||||
return {"error": f"Error downloading files: {str(e)}"}
|
||||
|
||||
|
||||
@app.get("/health")
|
||||
async def health_check():
|
||||
"""Health check endpoint that returns the status of the application"""
|
||||
return {"status": "healthy"}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ spec:
|
||||
# Liveness probe
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
path: /health
|
||||
port: 8000
|
||||
initialDelaySeconds: 90
|
||||
periodSeconds: 10
|
||||
@@ -55,7 +55,7 @@ spec:
|
||||
# Readiness probe
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
path: /health
|
||||
port: 8000
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
|
||||
@@ -13,7 +13,7 @@ resources:
|
||||
images:
|
||||
- name: math-exercises
|
||||
newName: harbor.cl1.parano.ch/library/math-exercice
|
||||
newTag: 1.0.2
|
||||
newTag: 1.0.7
|
||||
|
||||
# Production-specific labels
|
||||
|
||||
|
||||
+27
-4
@@ -1,9 +1,32 @@
|
||||
annotated-types==0.7.0
|
||||
anyio==4.10.0
|
||||
boto3==1.26.160
|
||||
boto3-stubs==1.40.23
|
||||
botocore==1.29.165
|
||||
botocore-stubs==1.40.23
|
||||
click==8.2.1
|
||||
defusedxml==0.7.1
|
||||
fastapi==0.116.1
|
||||
fonttools==4.59.2
|
||||
fpdf2==2.8.4
|
||||
h11==0.16.0
|
||||
idna==3.10
|
||||
Jinja2==3.1.4
|
||||
jmespath==1.0.1
|
||||
MarkupSafe==3.0.2
|
||||
pillow==11.3.0
|
||||
fastapi==0.115.0
|
||||
uvicorn==0.30.6
|
||||
jinja2==3.1.4
|
||||
pydantic==2.11.7
|
||||
pydantic_core==2.33.2
|
||||
python-dateutil==2.9.0.post0
|
||||
python-multipart==0.0.9
|
||||
boto3==1.34.0
|
||||
s3transfer==0.6.2
|
||||
six==1.17.0
|
||||
sniffio==1.3.1
|
||||
starlette==0.47.3
|
||||
types-awscrt==0.27.6
|
||||
types-fpdf2==2.8.4.20250822
|
||||
types-s3transfer==0.13.1
|
||||
typing-inspection==0.4.1
|
||||
typing_extensions==4.15.0
|
||||
urllib3==1.26.20
|
||||
uvicorn==0.30.6
|
||||
|
||||
Reference in New Issue
Block a user