PostgreSQL / Dockerfile
madibaalbert's picture
Update Dockerfile
f6408b2 verified
# ==========================================
# OMNIGROUP - POSTGRESQL CLOUD SOUVERAIN
# Infrastructure de Données de Haute Performance
# Spécial Hugging Face Spaces + Persistence
# Fix : Permission Override au Runtime
# ==========================================
FROM postgres:16-bookworm
USER root
# 1. Configuration Environnementale
ENV DEBIAN_FRONTEND=noninteractive \
POSTGRES_DB=nextcloud \
POSTGRES_USER=madiba_admin \
# On utilise un sous-dossier pour éviter de toucher à la racine de /data
PGDATA=/data/postgres_storage/pgdata
# 2. Configuration pour Hugging Face Spaces (Port 7860)
RUN sed -i "s/#port = 5432/port = 7860/" /usr/share/postgresql/postgresql.conf.sample
# 3. Préparation des répertoires système
RUN mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 2777 /var/run/postgresql
# 4. Script d'Entrée "Souverain" (Exécuté en ROOT)
RUN echo '#!/bin/bash\n\
set -e\n\
\n\
echo "[OMNIGROUP] Stabilisation des permissions du volume..." \n\
\n\
# Création et attribution du dossier de données au runtime\n\
mkdir -p /data/postgres_storage/pgdata\n\
chown -R postgres:postgres /data\n\
chmod -R 700 /data/postgres_storage\n\
\n\
echo "[SYSTEM] Passage à l utilisateur postgres et démarrage sur le port 7860..." \n\
\n\
# On utilise exec avec gosu (préinstallé dans l image postgres officielle) \n\
# pour lancer le point d entrée officiel en tant qu utilisateur postgres\n\
exec gosu postgres docker-entrypoint.sh postgres -p 7860' > /usr/local/bin/run_postgres.sh && \
chmod +x /usr/local/bin/run_postgres.sh
# 5. On reste en ROOT pour le démarrage afin de pouvoir gérer /data
USER root
EXPOSE 7860
ENTRYPOINT ["/usr/local/bin/run_postgres.sh"]