First commit

main
stef 2025-07-14 01:15:43 +02:00
commit 8908b1f876
6 changed files with 88 additions and 0 deletions

10
Readme.md 100644
View File

@ -0,0 +1,10 @@
# App demo: Exporter Prometheus en Python
Note:
L'implémentation integre Traefik,Pensez à faire les adaptations nécessaires dans docker-compose.yml.
Lancement
```
docker compose build
docker compose up -d
```

22
docker-compose.yml 100644
View File

@ -0,0 +1,22 @@
networks:
traefik:
external: true
services:
appdemo-docker:
build:
context: src
target: builder
hostname: appdemo-docker
container_name: appdemo-docker
restart: always
networks:
- traefik
labels:
- "traefik.docker.network=traefik"
- "traefik.enable=true"
- "traefik.http.routers.appdemo.rule=Host(`appdemo.dell.stef.lan`)"
- "traefik.http.routers.appdemo.entrypoints=insecure"
- "traefik.http.services.appdemo.loadbalancer.server.port=8000"
- "traefik.http.routers.appdemo.tls=false"

27
src/Dockerfile 100644
View File

@ -0,0 +1,27 @@
# syntax=docker/dockerfile:1.4
FROM --platform=$BUILDPLATFORM python:3.10-alpine AS builder
WORKDIR /app
COPY requirements.txt /app
RUN --mount=type=cache,target=/root/.cache/pip \
pip3 install -r requirements.txt
COPY . /app
ENTRYPOINT ["python3"]
CMD ["app.py"]
FROM builder as dev-envs
RUN <<EOF
apk update
apk add git
EOF
RUN <<EOF
addgroup -S docker
adduser -S --shell /bin/bash --ingroup docker vscode
EOF
# install Docker tools (cli, buildx, compose)
COPY --from=gloursdocker/docker / /

22
src/app.py 100644
View File

@ -0,0 +1,22 @@
from flask import Flask
from flask import request
from flask import render_template
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
metrics = PrometheusMetrics(app)
metrics.info('app_info', 'Application info', version='1.0.0')
@app.route('/')
def hello_geek():
return render_template('index.html')
if __name__ == "__main__":
app.run(debug=False,host='0.0.0.0', port=8000)
# app.run(host='0.0.0.0', port=8000)

View File

@ -0,0 +1,2 @@
flask
prometheus-flask-exporter

View File

@ -0,0 +1,5 @@
<!doctype html>
<title>Hello from Flask App demo</title>
<h1>Application de demo</h1>
<p>Exposition des métriques de l'application </p>
<a href="/metrics">Accés à l'exporter</a>