madibaalbert commited on
Commit
f6408b2
·
verified ·
1 Parent(s): 4e620ae

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -20
Dockerfile CHANGED
@@ -2,7 +2,7 @@
2
  # OMNIGROUP - POSTGRESQL CLOUD SOUVERAIN
3
  # Infrastructure de Données de Haute Performance
4
  # Spécial Hugging Face Spaces + Persistence
5
- # Fix : Permission Denied sur /data
6
  # ==========================================
7
 
8
  FROM postgres:16-bookworm
@@ -13,37 +13,35 @@ USER root
13
  ENV DEBIAN_FRONTEND=noninteractive \
14
  POSTGRES_DB=nextcloud \
15
  POSTGRES_USER=madiba_admin \
16
- # On définit PGDATA directement dans le volume persistant
17
  PGDATA=/data/postgres_storage/pgdata
18
 
19
- # 2. Configuration pour Hugging Face Spaces (Port 7860 exigé)
20
  RUN sed -i "s/#port = 5432/port = 7860/" /usr/share/postgresql/postgresql.conf.sample
21
 
22
- # 3. Préparation du volume persistant (Phase ROOT)
23
- # On crée toute l'arborescence ici pour que postgres en soit propriétaire
24
- RUN mkdir -p /data/postgres_storage/pgdata && \
25
- chown -R postgres:postgres /data && \
26
- chmod -R 700 /data/postgres_storage
27
 
28
- # 4. Script d'Initialisation Robuste
29
  RUN echo '#!/bin/bash\n\
30
  set -e\n\
31
  \n\
32
- echo "[OMNIGROUP] Initialisation du moteur PostgreSQL..." \n\
 
 
 
 
 
33
  \n\
34
- # Vérification des permissions au runtime par précaution\n\
35
- # Si le dossier appartient à root, on ne pourra rien faire, \n\
36
- # mais le build ci-dessus devrait régler le problème.\n\
37
  \n\
38
- echo "[SYSTEM] Démarrage de PostgreSQL sur le port 7860..." \n\
39
- exec docker-entrypoint.sh postgres -p 7860' > /usr/local/bin/run_postgres.sh && \
 
40
  chmod +x /usr/local/bin/run_postgres.sh
41
 
42
- # 5. Sécurité
43
- # On s'assure que les dossiers de socket sont accessibles
44
- RUN mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 2777 /var/run/postgresql
45
-
46
- USER postgres
47
 
48
  EXPOSE 7860
49
 
 
2
  # OMNIGROUP - POSTGRESQL CLOUD SOUVERAIN
3
  # Infrastructure de Données de Haute Performance
4
  # Spécial Hugging Face Spaces + Persistence
5
+ # Fix : Permission Override au Runtime
6
  # ==========================================
7
 
8
  FROM postgres:16-bookworm
 
13
  ENV DEBIAN_FRONTEND=noninteractive \
14
  POSTGRES_DB=nextcloud \
15
  POSTGRES_USER=madiba_admin \
16
+ # On utilise un sous-dossier pour éviter de toucher à la racine de /data
17
  PGDATA=/data/postgres_storage/pgdata
18
 
19
+ # 2. Configuration pour Hugging Face Spaces (Port 7860)
20
  RUN sed -i "s/#port = 5432/port = 7860/" /usr/share/postgresql/postgresql.conf.sample
21
 
22
+ # 3. Préparation des répertoires système
23
+ RUN mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 2777 /var/run/postgresql
 
 
 
24
 
25
+ # 4. Script d'Entrée "Souverain" (Exécuté en ROOT)
26
  RUN echo '#!/bin/bash\n\
27
  set -e\n\
28
  \n\
29
+ echo "[OMNIGROUP] Stabilisation des permissions du volume..." \n\
30
+ \n\
31
+ # Création et attribution du dossier de données au runtime\n\
32
+ mkdir -p /data/postgres_storage/pgdata\n\
33
+ chown -R postgres:postgres /data\n\
34
+ chmod -R 700 /data/postgres_storage\n\
35
  \n\
36
+ echo "[SYSTEM] Passage à l utilisateur postgres et démarrage sur le port 7860..." \n\
 
 
37
  \n\
38
+ # On utilise exec avec gosu (préinstallé dans l image postgres officielle) \n\
39
+ # pour lancer le point d entrée officiel en tant qu utilisateur postgres\n\
40
+ exec gosu postgres docker-entrypoint.sh postgres -p 7860' > /usr/local/bin/run_postgres.sh && \
41
  chmod +x /usr/local/bin/run_postgres.sh
42
 
43
+ # 5. On reste en ROOT pour le démarrage afin de pouvoir gérer /data
44
+ USER root
 
 
 
45
 
46
  EXPOSE 7860
47