new file: Dockerfile

new file:   app.py
	new file:   requirements.txt
This commit is contained in:
SimolZimol
2025-12-12 04:11:38 +01:00
commit eb78f90d8f
3 changed files with 112 additions and 0 deletions

30
Dockerfile Normal file
View File

@@ -0,0 +1,30 @@
FROM python:3.10-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
PORT=5000
WORKDIR /app
# Keep image minimal; add build tools only if future deps require them
RUN apt-get update -y && apt-get install -y --no-install-recommends \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Install dependencies (better layer caching)
COPY requirements.txt ./
RUN pip install --upgrade pip && pip install -r requirements.txt
# Copy application code
COPY app.py ./
COPY templates ./templates
COPY static ./static
# Environment variables from Coolify (if used)
ENV DEMO=$DEMO
EXPOSE 5000
# Production server (use shell form so $PORT expands in Coolify)
CMD gunicorn -w ${WEB_CONCURRENCY:-3} -b 0.0.0.0:${PORT:-5000} app:app

80
app.py Normal file
View File

@@ -0,0 +1,80 @@
from flask import Flask, render_template_string
app = Flask(__name__)
MAINTENANCE_MESSAGE = """
<!DOCTYPE html>
<html lang=\"de\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<title>Wartungsarbeiten</title>
<style>
body {
min-height: 100vh;
margin: 0;
background: linear-gradient(135deg, #e0eafc 0%, #cfdef3 100%);
display: flex;
align-items: center;
justify-content: center;
font-family: 'Segoe UI', Arial, sans-serif;
}
.container {
background: #fff;
padding: 2.5rem 3.5rem;
border-radius: 18px;
box-shadow: 0 6px 32px rgba(0,0,0,0.12);
text-align: center;
max-width: 420px;
}
h1 {
color: #00796b;
font-size: 2.2rem;
margin-bottom: 1.2rem;
}
p {
color: #333;
font-size: 1.1rem;
margin-bottom: 0.8rem;
}
a {
color: #00796b;
text-decoration: none;
font-weight: 500;
transition: color 0.2s;
}
a:hover {
color: #004d40;
text-decoration: underline;
}
.icon {
font-size: 3.5rem;
margin-bottom: 0.7rem;
color: #00796b;
}
@media (max-width: 600px) {
.container {
padding: 1.2rem 0.5rem;
max-width: 98vw;
}
h1 { font-size: 1.4rem; }
}
</style>
</head>
<body>
<div class=\"container\">
<div class=\"icon\">🔧</div>
<h1>Wartungsarbeiten</h1>
<p>Die Website <a href=\"https://projekt-senegal.de/\">projekt-senegal.de</a> ist derzeit wegen Wartungsarbeiten nicht erreichbar.</p>
<p>Wir sind bald wieder für Sie da.<br>Vielen Dank für Ihr Verständnis!</p>
</div>
</body>
</html>
"""
@app.route("/")
def maintenance():
return render_template_string(MAINTENANCE_MESSAGE)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)

2
requirements.txt Normal file
View File

@@ -0,0 +1,2 @@
Flask==3.0.3
gunicorn==21.2.0