This commit is contained in:
2025-09-01 07:56:13 +02:00
parent 41b613f451
commit 68144c3918
10 changed files with 257 additions and 93 deletions

View File

@@ -1,5 +1,28 @@
FROM debian:trixie 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 \
cmake \
checkinstall \
;
FROM build-essential AS build-pgdev
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
postgresql-server-dev-17 \
;
# Étape 1 : builder temporaire pour compiler pgTAP
FROM debian:trixie AS builder
FROM debian:trixie AS pgTAP
# Installer les outils nécessaires pour compiler pgTAP
RUN apt-get update && \
@@ -16,7 +39,55 @@ RUN git clone --depth 1 https://github.com/theory/pgtap.git /usr/src/pgtap && \
make && \
make install DESTDIR=/pgtap-dist
# Étape 2 : image finale PostgreSQL propre
# =============================================================================
# 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
# =============================================================================
# pgVector
FROM build-pgdev AS pgvector
ARG pgvector_release=0.6.2
ADD "https://github.com/pgvector/pgvector/archive/refs/tags/v${pgvector_release}.tar.gz" \
/tmp/pgvector.tar.gz
RUN tar -xvf /tmp/pgvector.tar.gz -C /tmp && \
rm -rf /tmp/pgvector.tar.gz
# Build from source
WORKDIR /tmp/pgvector-${pgvector_release}
RUN make -j$(nproc)
# Create debian package
RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp \
--nodoc
# Étape 3 : image finale PostgreSQL propre
FROM postgres:17.6
RUN set -eux; \
@@ -37,4 +108,13 @@ RUN set -eux; \
postgresql-postgis
# Copier uniquement les fichiers installés depuis le builder
COPY --from=builder /pgtap-dist/ /
COPY --from=pgTAP /pgtap-dist/ /
COPY --from=pgrouting /tmp/*.deb /tmp
COPY --from=pgvector /tmp/*.deb /tmp
RUN set -eux; \
apt-get install \
/tmp/*.deb \
-y; \
rm /tmp/*.deb;