bank
This commit is contained in:
18
README.md
18
README.md
@@ -1,23 +1,5 @@
|
|||||||
### Construire l'image
|
### Construire l'image
|
||||||
|
|
||||||
```shell
|
|
||||||
docker build -t iut/pgsql:2025-12 -f postgresql.Dockerfile .
|
|
||||||
```
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker network create pg_net
|
|
||||||
```
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker run --detach --name pgsql --restart=always \
|
|
||||||
--network pg_net -p "5432:5432" \
|
|
||||||
-e "POSTGRES_INITDB_ARGS=--locale-provider=icu --icu-locale=fr-FR" \
|
|
||||||
-e "POSTGRES_PASSWORD=ChangeMe" \
|
|
||||||
-e "POSTGRES_USER=iut" \
|
|
||||||
-v pgsql_data:/var/lib/postgresql:rw \
|
|
||||||
-v caddy_data:/data \
|
|
||||||
iut/pgsql:2025-12
|
|
||||||
```
|
|
||||||
|
|
||||||
## Données
|
## Données
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,22 @@
|
|||||||
|
show server_version;
|
||||||
|
|
||||||
|
-- ----------------------------------------------------------------------
|
||||||
|
-- extensions
|
||||||
|
-- ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
select * from pg_available_extensions;
|
||||||
|
|
||||||
|
SHOW shared_preload_libraries;
|
||||||
|
|
||||||
drop schema if exists public cascade;
|
drop schema if exists public cascade;
|
||||||
create schema public;
|
create schema public;
|
||||||
|
|
||||||
create schema if not exists ext;
|
create schema if not exists ext;
|
||||||
create extension if not exists pgcrypto schema ext;
|
create extension if not exists pgcrypto schema ext;
|
||||||
|
|
||||||
|
create extension if not exists pg_cron;
|
||||||
|
|
||||||
|
|
||||||
create type holder_type as enum ('BANK', 'PERSON', 'COMPANY');
|
create type holder_type as enum ('BANK', 'PERSON', 'COMPANY');
|
||||||
|
|
||||||
create table holder (
|
create table holder (
|
||||||
@@ -60,7 +73,11 @@ create table currency (
|
|||||||
|
|
||||||
insert into currency
|
insert into currency
|
||||||
values ('EUR', 'Euro'), ('JPY', 'Yen'), ('USD', 'US Dollar'),
|
values ('EUR', 'Euro'), ('JPY', 'Yen'), ('USD', 'US Dollar'),
|
||||||
('GBP', 'Livre Sterling'), ('KRW', 'Won');
|
('GBP', 'Livre Sterling'), ('KRW', 'Won'), ('ZAR', 'Rand sud africain'),
|
||||||
|
('CHF', 'Franc suisse'),
|
||||||
|
('AUD', 'Dollar australien'), ('CAD', 'Dollar canadien'),
|
||||||
|
('SEK', 'Couronne suédoise'),
|
||||||
|
('NOK', 'Couronne norvégienne');
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* Exchange Rate
|
* Exchange Rate
|
||||||
@@ -90,7 +107,7 @@ create temporary table if not exists eurofxref (
|
|||||||
dumb text
|
dumb text
|
||||||
);
|
);
|
||||||
|
|
||||||
copy eurofxref FROM '/docker-entrypoint-initdb.d/banque/eurofxref-hist.csv' (FORMAT CSV, header, delimiter ',', ENCODING 'UTF8');
|
\copy eurofxref FROM '/docker-entrypoint-initdb.d/eurofxref-hist.csv' (FORMAT CSV, header, delimiter ',', ENCODING 'UTF8');
|
||||||
|
|
||||||
insert into exchange_rate
|
insert into exchange_rate
|
||||||
select 'USD', date, USD from eurofxref;
|
select 'USD', date, USD from eurofxref;
|
||||||
@@ -104,6 +121,27 @@ select 'GBP', date, GBP from eurofxref;
|
|||||||
insert into exchange_rate
|
insert into exchange_rate
|
||||||
select 'KRW', date, KRW from eurofxref;
|
select 'KRW', date, KRW from eurofxref;
|
||||||
|
|
||||||
|
insert into exchange_rate
|
||||||
|
select 'ZAR', date, ZAR from eurofxref;
|
||||||
|
|
||||||
|
/*insert into exchange_rate
|
||||||
|
select 'BRL', date, BRL from eurofxref where BRL <> 'N/A';*/
|
||||||
|
|
||||||
|
insert into exchange_rate
|
||||||
|
select 'CHF', date, CHF from eurofxref;
|
||||||
|
|
||||||
|
insert into exchange_rate
|
||||||
|
select 'AUD', date, AUD from eurofxref;
|
||||||
|
|
||||||
|
insert into exchange_rate
|
||||||
|
select 'CAD', date, CAD from eurofxref;
|
||||||
|
|
||||||
|
/*insert into exchange_rate
|
||||||
|
select 'MXN', date, MXN from eurofxref;*/
|
||||||
|
|
||||||
|
insert into exchange_rate
|
||||||
|
select 'NOK', date, NOK from eurofxref;
|
||||||
|
|
||||||
create or replace function latest_exchange_rate (
|
create or replace function latest_exchange_rate (
|
||||||
p_code text,
|
p_code text,
|
||||||
p_date date
|
p_date date
|
||||||
|
|||||||
@@ -1,154 +0,0 @@
|
|||||||
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 \
|
|
||||||
;
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# pgTAP
|
|
||||||
#
|
|
||||||
FROM build-pgdev AS pgtap
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# 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
|
|
||||||
RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp --nodoc
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# pgVector
|
|
||||||
#
|
|
||||||
FROM build-pgdev AS pgvector
|
|
||||||
|
|
||||||
ARG pgvector_release=0.8.1
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
# Create debian package
|
|
||||||
RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp \
|
|
||||||
--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-pglogical; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Copier uniquement les fichiers installés depuis le builder
|
|
||||||
COPY --from=pgtap /pgtap-dist/ /
|
|
||||||
COPY --from=pgrouting /tmp/*.deb /tmp
|
|
||||||
COPY --from=pgvector /tmp/*.deb /tmp
|
|
||||||
COPY --from=pgcron /tmp/*.deb /tmp
|
|
||||||
|
|
||||||
RUN set -eux; \
|
|
||||||
apt-get install \
|
|
||||||
/tmp/*.deb \
|
|
||||||
-y; \
|
|
||||||
rm /tmp/*.deb;
|
|
||||||
Reference in New Issue
Block a user