Files
sql/compose.yaml
2025-10-12 18:20:29 +02:00

295 lines
8.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
database:
image: iut/pgsql:2025-12
environment:
POSTGRES_INITDB_ARGS: "--locale-provider=icu --icu-locale=fr-FR"
POSTGRES_DB: ${COMPOSE_PROJECT_NAME}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
POSTGRES_USER: ${COMPOSE_PROJECT_NAME}
volumes:
- database_data:/var/lib/postgresql:rw
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d:Z
- ./data:/tmp:z
ports:
- "5432:5432"
healthcheck:
test: ["CMD", "pg_isready", "--username", "${COMPOSE_PROJECT_NAME}", "--dbname", "${COMPOSE_PROJECT_NAME}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
# pgAdmin
# Rich administration and development platform for PostgreSQL.
# https://www.pgadmin.org/
pgadmin:
image: dpage/pgadmin4:${PGADMIN_VERSION:-8.11}
depends_on:
postgresql:
condition: service_healthy
restart: "no"
configs:
- source: pgadmin_config
target: /pgadmin4/servers.json
volumes:
- pgadmin:/var/lib/pgadmin/
ports:
- "3009:80"
environment:
PGADMIN_DEFAULT_EMAIL: ${ADMIN_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${ADMIN_PASSWORD}
PGADMIN_DISABLE_POSTFIX: true
profiles:
- admin
# ----------------------------------------------------------------------
# Business Intelligence
#
# ----------------------------------------------------------------------
superset:
image: apache/superset:3.1.3
depends_on:
database:
condition: service_healthy
environment:
SUPERSET_CONFIG_PATH: /app/pythonpath/superset_config.py
SUPERSET_SECRET_KEY: ${SUPERSET_SECRET:-YOUR_OWN_RANDOM_GENERATED_SECRET_KEY}
SUPERSET_LOAD_EXAMPLES: no
ports:
- "8088:8088"
volumes:
- superset_home:/app/superset_home
- ./superset_config.py:/app/pythonpath/superset_config.py:Z
command: >
sh -c "
superset db upgrade &&
superset fab create-admin --username admin --firstname Admin --lastname User --email admin@superset.com --password admin &&
superset init &&
superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger
"
profiles:
- bi
metabase:
image: metabase/metabase:v0.56.5.5
depends_on:
database:
condition: service_healthy
volumes:
- /dev/urandom:/dev/random:ro
ports:
- "3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_HOST: ${MB_DB_HOST:-database}
MB_DB_PORT: 5432
MB_DB_USER: metabase_user
MB_DB_PASS: ${DB_ROOT_PASSWORD:-supermotdepasse}
MB_DB_DBNAME: metabase
MB_SITE_LOCALE: fr
MB_ADMIN_EMAIL: etudiant@univ-lorraine.fr
MB_ANON_TRACKING_ENABLED: false
MB_CHECK_FOR_UPDATES: false
MB_NO_SURVEYS: yes
MB_START_OF_WEEK: monday
MB_CUSTOM_FORMATTING: '{"type/Temporal":{"time_style":"HH:mm","date_style":"D MMMM, YYYY","date_abbreviate":true},"type/Currency":{"currency":"EUR"},"type/Number":{"number_separators":", "}}'
MB_EMAIL_SMTP_HOST: mailpit
MB_EMAIL_SMTP_PORT: 1025
MB_EMAIL_FROM_ADDRESS: metabase@univ-lorraine.fr
profiles:
- bi
metabase-init:
build:
context: ./metabase
depends_on:
- metabase
profiles:
- bi
# CouchDB
# Single-node document database
# https://couchdb.apache.org/
couchdb:
image: couchdb:${COUCH_DB_VERSION:-3.5}
volumes:
- couchdb_data:/opt/couchdb/data
ports:
- "5984:5984"
environment:
COUCHDB_USER: ${DB_ROOT_USER:-admin}
COUCHDB_PASSWORD: ${DB_ROOT_PASSWORD:-!ChangeMe!}
# MongoDB
#
# https://www.mongodb.com/
mongodb:
image: mongodb/mongodb-community-server:8.0-ubi8
volumes:
- mongodb_configdb:/data/configdb
- mongodb_data:/data/db
- ./mongodb-entrypoint-initdb.d:/docker-entrypoint-initdb.d:Z
- ./data:/initdb.d:z
ports:
- "27017:27017"
environment:
MONGODB_INITDB_ROOT_USERNAME: ${DB_ROOT_USER:-admin}
MONGODB_INITDB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-!ChangeMe!}
# Redis
# In-memory key-value database
# https://redis.io/fr/
redis:
image: redis:8.2
command:
- 'redis-server'
- '--save 60 1'
- '--loglevel verbose'
- '--requirepass ${DB_ROOT_PASSWORD:-!ChangeMe!}'
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "-a", "${DB_ROOT_PASSWORD:-!ChangeMe!}", "--raw", "incr", "ping" ]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
volumes:
- redis_data:/data
# Neo4J
# Des graphes ultra-rapides, à léchelle du pétaoctet
# https://neo4j.com/
neo4j:
image: neo4j:5.26.12-community
ports:
- 7473:7473
- 7474:7474
- 7687:7687
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
environment:
NEO4J_AUTH: neo4j/${DB_ROOT_PASSWORD:-!ChangeMe!}
# Caddy
# Web server, load balancer, and reverse proxy
# https://caddyserver.com/
caddy:
image: caddy:2.10.2
restart: "no"
ports:
- "8080:80"
- "2019:2019"
volumes:
- ./data:/usr/share/caddy
# ----------------------------------------------------------------------
# Web API
#
# ----------------------------------------------------------------------
# PostgREST
# Serve a fully RESTful API from any existing PostgreSQL database.
# It provides a cleaner, more standards-compliant, faster API than you are likely to write from scratch.
# https://docs.postgrest.org/en/v12/
postgrest:
image: postgrest/postgrest:${POSTGREST_VERSION:-v13.0.7}
restart: "no"
depends_on:
database:
condition: service_healthy
command: postgrest
ports:
- 3005:3005
environment:
PGRST_DB_URI: postgres://${POSTGREST_USER:-postgrest}:${DB_PASSWORD}@${POSTGREST_HOST:-postgresql}:${POSTGREST_DB_PORT:-5432}/${DB_NAME:-postgrest}
PGRST_DB_SCHEMAS: ${POSTGREST_DB_SCHEMAS:-public}
PGRST_DB_ANON_ROLE: ${POSTGREST_DB_ANON_ROLE:-role_web}
PGRST_JWT_SECRET: ${POSTGREST_JWT_SECRET:-ABCDEFGHIJKLMNOPQRSTUVWXYZ}
PGRST_DB_USE_LEGACY_GUCS: ${POSTGREST_DB_USE_LEGACY_GUCS:-false}
PGRST_APP_SETTINGS_JWT_SECRET: ${POSTGREST_APP_SETTINGS_JWT_SECRET}
PGRST_APP_SETTINGS_JWT_EXP: ${POSTGREST_APP_SETTINGS_JWT_EXP}
PGRST_ADMIN_SERVER_PORT: 3055
PGRST_SERVER_PORT: 3005
profiles:
- api
# ----------------------------------------------------------------------
# Observabilité - Télémétrie
#
# ----------------------------------------------------------------------
# Grafana
# Open source analytics & monitoring solution for every database.
# https://grafana.com/
grafana:
image: grafana/grafana-oss:${GRAFANA_VERSION:-12.2}
restart: no
depends_on:
- loki
deploy:
resources:
limits:
memory: 100M
configs:
- source: grafana_datasources
target: /etc/grafana/provisioning/datasources
- source: grafana_dashboards
target: /etc/grafana/dashboards
volumes:
- grafana:/var/lib/grafana
ports:
- 3000:3000
#environment:
#GF_SECURITY_ADMIN_EMAIL: ${ADMIN_EMAIL}
#GF_SECURITY_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
#GF_AUTH_ANONYMOUS_ENABLED: true # Enabled the Anonymous user no user/pass needed
#GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
#GF_AUTH_DISABLE_LOGIN_FORM: true
#GF_USERS_DEFAULT_THEME: light
#GF_USERS_ALLOW_SIGN_UP: false
#GF_FEATURE_TOGGLES_ENABLE: traceQLStreaming metricsSummary lokiFormatQuery alertmanagerRemoteOnly
#GF_INSTALL_PLUGINS: yesoreyeram-infinity-datasource
profiles:
- telemetry
# Prometheus
# Prometheus is an open-source systems monitoring and alerting toolkit
# https://prometheus.io/
prometheus:
image: prom/prometheus:${PROMETHEUS_VERSION:-v3.6.0}
configs:
- source: prometheus_config
target: /etc/prometheus/prometheus.yml
volumes:
- prometheus:/prometheus
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- 9090:9090
#extra_hosts:
# - host.docker.internal=host-gateway
profiles:
- telemetry
volumes:
database_data:
superset_home:
couchdb_data:
mongodb_data:
mongodb_configdb:
redis_data:
neo4j_data:
neo4j_logs:
prometheus:
grafana:
configs:
pgadmin_config:
file: ./pgadmin-servers.json