First commit
commit
8908b1f876
|
|
@ -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
|
||||||
|
```
|
||||||
|
|
@ -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"
|
||||||
|
|
||||||
|
|
@ -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 / /
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
flask
|
||||||
|
prometheus-flask-exporter
|
||||||
|
|
@ -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>
|
||||||
Loading…
Reference in New Issue