Files
sql/postgresql.Dockerfile

157 lines
3.9 KiB
Docker
Raw Normal View History

2025-10-05 19:16:58 +02:00
FROM debian:forky AS build-essential
2025-09-01 07:56:13 +02:00
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 \
2025-10-05 19:16:58 +02:00
ca-certificates \
2025-10-13 20:59:17 +02:00
checkinstall \
cmake \
2025-09-01 07:56:13 +02:00
;
FROM build-essential AS build-pgdev
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
2025-10-05 19:16:58 +02:00
postgresql-server-dev-18 \
2025-09-01 07:56:13 +02:00
;
2025-09-12 22:14:49 +02:00
# =============================================================================
# pgTAP
#
2025-10-05 19:16:58 +02:00
FROM build-pgdev AS pgtap
2025-08-27 07:51:06 +02:00
# Installer les outils nécessaires pour compiler pgTAP
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
make
# Cloner et compiler pgTAP
RUN git clone --depth 1 https://github.com/theory/pgtap.git /usr/src/pgtap && \
cd /usr/src/pgtap && \
make && \
make install DESTDIR=/pgtap-dist
2025-09-01 07:56:13 +02:00
# =============================================================================
# pgRouting
2025-09-12 22:14:49 +02:00
#
2025-09-01 07:56:13 +02:00
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
2025-09-12 12:54:16 +02:00
# =============================================================================
# pg_cron
#
FROM build-pgdev AS pgcron
# Télécharger
ARG pg_cron_release=1.6.7
ADD "https://github.com/citusdata/pg_cron/archive/refs/tags/v${pg_cron_release}.tar.gz" \
/tmp/pg_cron.tar.gz
# Extraire
RUN tar -xvf /tmp/pg_cron.tar.gz -C /tmp && \
rm -rf /tmp/pg_cron.tar.gz
# Build from source
WORKDIR /tmp/pg_cron-${pg_cron_release}
RUN make
# Create debian package
2025-09-12 22:14:49 +02:00
RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp --nodoc
2025-09-12 12:54:16 +02:00
2025-09-01 07:56:13 +02:00
# =============================================================================
# pgVector
2025-09-12 12:54:16 +02:00
#
2025-09-01 07:56:13 +02:00
FROM build-pgdev AS pgvector
2025-10-05 19:16:58 +02:00
ARG pgvector_release=0.8.1
2025-09-01 07:56:13 +02:00
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}
2025-09-12 22:14:49 +02:00
RUN make
2025-09-01 07:56:13 +02:00
# Create debian package
RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp \
--nodoc
2025-09-12 22:14:49 +02:00
# =============================================================================
2025-09-01 07:56:13 +02:00
# Étape 3 : image finale PostgreSQL propre
2025-09-12 22:14:49 +02:00
#
2025-10-05 19:16:58 +02:00
FROM postgres:18-trixie
2025-08-27 07:51:06 +02:00
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
locales; \
2025-10-13 20:59:17 +02:00
apt-get clean; \
2025-08-27 07:51:06 +02:00
sed -i '/fr_FR.UTF-8/s/^# //' /etc/locale.gen; \
2025-10-13 20:59:17 +02:00
locale-gen; \
2025-10-05 19:16:58 +02:00
ENV TZ=Europe/Paris
2025-08-27 07:51:06 +02:00
ENV LANG=fr_FR.UTF-8
ENV LANGUAGE=fr_FR:fr
ENV LC_ALL=fr_FR.UTF-8
2025-10-05 19:16:58 +02:00
ENV POSTGIS_MAJOR=3
ENV POSTGIS_VERSION=3.6.0+dfsg-1.pgdg13+1
2025-08-27 07:51:06 +02:00
RUN set -eux; \
apt-get update; \
2025-10-05 19:16:58 +02:00
apt-cache showpkg postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR; \
2025-08-27 07:51:06 +02:00
apt-get install -y --no-install-recommends \
2025-10-05 19:16:58 +02:00
# ca-certificates: for accessing remote raster files;
# fix: https://github.com/postgis/docker-postgis/issues/307
ca-certificates \
\
postgresql-18-postgis-$POSTGIS_MAJOR=$POSTGIS_VERSION \
postgresql-18-postgis-$POSTGIS_MAJOR-scripts; \
rm -rf /var/lib/apt/lists/*
2025-08-27 07:51:06 +02:00
# Copier uniquement les fichiers installés depuis le builder
2025-09-03 09:32:47 +02:00
COPY --from=pgtap /pgtap-dist/ /
2025-09-01 07:56:13 +02:00
COPY --from=pgrouting /tmp/*.deb /tmp
COPY --from=pgvector /tmp/*.deb /tmp
2025-09-12 12:54:16 +02:00
COPY --from=pgcron /tmp/*.deb /tmp
2025-09-01 07:56:13 +02:00
RUN set -eux; \
apt-get install \
/tmp/*.deb \
-y; \
rm /tmp/*.deb;