From 6611eba536f67423401f3b38e9a966a3469fcee3 Mon Sep 17 00:00:00 2001 From: medina5 Date: Thu, 27 Nov 2025 07:40:19 +0100 Subject: [PATCH] pgAgent --- grafana.md | 13 +++- postgresql.Dockerfile | 143 ++++++++++++++++++++++++++++++++++++++++++ postgresql.md | 10 ++- 3 files changed, 162 insertions(+), 4 deletions(-) create mode 100644 postgresql.Dockerfile diff --git a/grafana.md b/grafana.md index 0a11149..8dba8d3 100644 --- a/grafana.md +++ b/grafana.md @@ -44,9 +44,18 @@ http://100.68.98.xx:3000/ ### Sur PC avec Docker ```shell -docker pull grafana/grafana +docker pull grafana/grafana:12.1 -docker run --name=grafana -p 9005:3000 -d grafana/grafana:latest +docker run --detach --name grafana \ + --network proxy_net \ + -e "GF_SECURITY_ADMIN_USER=admin" \ + -e "GF_SECURITY_ADMIN_PASSWORD=geii2025" \ + -e "GF_USERS_ALLOW_SIGN_UP=false" \ + -e "GF_DEFAULT_THEME=system" \ + --label "caddy=grafana.localhost" \ + --label "caddy.reverse_proxy={{upstreams 3000}}" \ + --label "caddy.tls=internal" \ + grafana/grafana:12.1 ``` ### Sur Raspberry diff --git a/postgresql.Dockerfile b/postgresql.Dockerfile new file mode 100644 index 0000000..1eb0664 --- /dev/null +++ b/postgresql.Dockerfile @@ -0,0 +1,143 @@ +FROM debian:forky AS build-essential + +RUN set -eux; \ + apt-get update; \ + apt-get upgrade -y + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + build-essential \ + ca-certificates \ + checkinstall \ + cmake \ + ; + +FROM build-essential AS build-pgdev + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + postgresql-server-dev-18 \ + ; + +# ============================================================================= +# pgRouting +# +FROM build-pgdev AS pgrouting + +ARG pgrouting_release=3.8.0 + +ADD "https://github.com/pgRouting/pgrouting/releases/download/v${pgrouting_release}/pgrouting-${pgrouting_release}.tar.gz" \ + /tmp/pgrouting.tar.gz + +RUN set -eux; \ + tar -xvf /tmp/pgrouting.tar.gz -C /tmp; \ + rm -rf /tmp/pgrouting.tar.gz; + +# Installer les dépendances de compilation +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libboost-all-dev \ + ; + +WORKDIR /tmp/pgrouting-${pgrouting_release}/build +RUN cmake -DBUILD_HTML=OFF -DBUILD_DOXY=OFF .. + +# Create debian package +RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp \ + --pkgname=pgrouting --pkgversion=${pgrouting_release} \ + --nodoc + +# ============================================================================= +# TimescaleDB + +FROM build-pgdev AS timescaledb + +ARG timescaledb_release=2.23.1 + +# Download and extract +ADD "https://github.com/timescale/timescaledb/archive/refs/tags/${timescaledb_release}.tar.gz" \ + /tmp/timescaledb.tar.gz + +RUN set -eux; \ + tar -xvf /tmp/timescaledb.tar.gz -C /tmp; \ + rm -rf /tmp/timescaledb.tar.gz; + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libkrb5-dev \ + ; + +# Build from source +WORKDIR /tmp/timescaledb-${timescaledb_release} +RUN ./bootstrap + +WORKDIR /tmp/timescaledb-${timescaledb_release}/build +RUN make -j$(nproc) + +# Create debian package +RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp \ + --pkgname=timescaledb --pkgversion=${timescaledb_release} \ + --nodoc + +# ============================================================================= +# Étape 3 : image finale PostgreSQL propre +# +FROM postgres:18-trixie + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + locales; \ + apt-get clean; \ + sed -i '/fr_FR.UTF-8/s/^# //' /etc/locale.gen; \ + locale-gen; + +ENV TZ=Europe/Paris +ENV LANG=fr_FR.UTF-8 +ENV LANGUAGE=fr_FR:fr +ENV LC_ALL=fr_FR.UTF-8 + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + # ca-certificates: for accessing remote raster files; + # fix: https://github.com/postgis/docker-postgis/issues/307 + ca-certificates \ + postgresql-postgis; + +RUN set -eux; \ + apt-get install -y --no-install-recommends \ + postgresql-18-cron; + +RUN set -eux; \ + apt-get install -y --no-install-recommends \ + postgresql-18-pgvector; + +RUN set -eux; \ + apt-get install -y --no-install-recommends \ + postgresql-18-pgtap; + +RUN set -eux; \ + apt-get install -y --no-install-recommends \ + postgresql-18-pglogical; + +RUN set -eux; \ + apt-get install -y --no-install-recommends \ + postgresql-18-mobilitydb;\ + rm -rf /var/lib/apt/lists/* + +# Copier uniquement les fichiers installés depuis le builder +COPY --from=pgrouting /tmp/*.deb /tmp +COPY --from=timescaledb /tmp/*.deb /tmp + +RUN set -eux; \ + apt-get install \ + /tmp/*.deb \ + -y; \ + rm /tmp/*.deb; + +CMD ["postgres", "-c", "shared_preload_libraries=pg_cron,timescaledb", "-c", "cron.database_name=iut"] diff --git a/postgresql.md b/postgresql.md index 841ca1a..4c6d084 100644 --- a/postgresql.md +++ b/postgresql.md @@ -15,6 +15,12 @@ sudo apt install postgresql-18 docker network create pgsql_net ``` +```shell +docker build -t iut/pgsql:2025-13 \ + --progress=plain \ + -f postgresql.Dockerfile . &> postgresql.log +``` + ```shell docker run --detach --name pgsql \ --network pgsql_net \ @@ -24,7 +30,7 @@ docker run --detach --name pgsql \ -e "POSTGRES_USER=iut" \ -v pgsql_data:/var/lib/postgresql \ -v "./:/docker-entrypoint-initdb.d" \ - iut/pgsql:2025-12 + iut/pgsql:2025-13 ``` ## pgAdmin @@ -40,7 +46,7 @@ docker run --detach --name pgadmin \ --label "caddy=pgadmin.localhost" \ --label "caddy.reverse_proxy={{upstreams 80}}" \ --label "caddy.tls=internal" \ - dpage/pgadmin4:9.8 + dpage/pgadmin4:9.10 ``` ```