This commit is contained in:
vagrant user 2026-01-08 15:41:44 +01:00
parent 27083ef19b
commit 0561442e78
2 changed files with 44 additions and 28 deletions

View File

@ -1,6 +1,6 @@
FROM debian:bullseye-slim FROM debian:bullseye-slim
# Installation des dépendances de base + PostgreSQL # Installation des dépendances de base
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
apache2 \ apache2 \
supervisor \ supervisor \
@ -10,10 +10,15 @@ RUN apt-get update && apt-get install -y \
gnupg \ gnupg \
lsb-release \ lsb-release \
openjdk-17-jdk \ openjdk-17-jdk \
postgresql-13 \
postgresql-contrib \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# Installation de PostgreSQL 18 depuis le dépôt officiel
RUN echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
apt-get update && \
apt-get install -y postgresql-18 postgresql-client-18 postgresql-contrib && \
rm -rf /var/lib/apt/lists/*
# Installation de Tomcat 10 # Installation de Tomcat 10
RUN cd /opt && \ RUN cd /opt && \
wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.47/bin/apache-tomcat-10.1.47.tar.gz && \ wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.47/bin/apache-tomcat-10.1.47.tar.gz && \
@ -46,10 +51,10 @@ RUN wget https://github.com/grafana/loki/releases/download/v2.9.0/promtail-linux
&& chmod +x /usr/local/bin/promtail \ && chmod +x /usr/local/bin/promtail \
&& rm promtail-linux-amd64.zip && rm promtail-linux-amd64.zip
# Suppression et recréation des répertoires PostgreSQL # Suppression et recréation des répertoires PostgreSQL 18
RUN rm -rf /var/lib/postgresql/13/main && \ RUN rm -rf /var/lib/postgresql/18/main && \
mkdir -p /var/run/postgresql \ mkdir -p /var/run/postgresql \
/var/lib/postgresql/13/main \ /var/lib/postgresql/18/main \
/var/log/postgresql \ /var/log/postgresql \
/var/log/apache2 \ /var/log/apache2 \
/var/log/promtail \ /var/log/promtail \
@ -58,16 +63,20 @@ RUN rm -rf /var/lib/postgresql/13/main && \
/docker-entrypoint-initdb.d && \ /docker-entrypoint-initdb.d && \
chown -R postgres:postgres /var/run/postgresql /var/lib/postgresql /var/log/postgresql chown -R postgres:postgres /var/run/postgresql /var/lib/postgresql /var/log/postgresql
# Initialisation de PostgreSQL # Initialisation de PostgreSQL 18
RUN su - postgres -c "/usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main" && \ RUN su - postgres -c "/usr/lib/postgresql/18/bin/initdb -D /var/lib/postgresql/18/main" && \
echo "host all all 0.0.0.0/0 md5" >> /var/lib/postgresql/13/main/pg_hba.conf && \ echo "host all all 0.0.0.0/0 md5" >> /var/lib/postgresql/18/main/pg_hba.conf && \
echo "listen_addresses='*'" >> /var/lib/postgresql/13/main/postgresql.conf echo "listen_addresses='*'" >> /var/lib/postgresql/18/main/postgresql.conf
# Modification du pg_hba.conf pour utiliser md5 au lieu de peer (comme dans le script bash)
RUN sed -i "s/^local\s\+all\s\+all\s\+peer/local all all md5/" /var/lib/postgresql/18/main/pg_hba.conf
# Copie des scripts SQL # Copie des scripts SQL
COPY database/schema.sql /docker-entrypoint-initdb.d/01-schema.sql COPY database/schema.sql /docker-entrypoint-initdb.d/01-schema.sql
COPY database/data.sql /docker-entrypoint-initdb.d/02-data.sql COPY database/data.sql /docker-entrypoint-initdb.d/02-data.sql
# Script pour créer la base de données et exécuter les scripts SQL # Script pour créer la base de données et exécuter les scripts SQL
# Mot de passe changé en archiweb_pass
RUN echo '#!/bin/bash\n\ RUN echo '#!/bin/bash\n\
echo "Waiting for PostgreSQL to start..."\n\ echo "Waiting for PostgreSQL to start..."\n\
for i in {1..30}; do\n\ for i in {1..30}; do\n\
@ -81,7 +90,7 @@ done\n\
\n\ \n\
echo "Creating database and user..."\n\ echo "Creating database and user..."\n\
su - postgres -c "psql -c \"SELECT 1 FROM pg_database WHERE datname = '\''archiweb_db'\''\" | grep -q 1 || psql -c \"CREATE DATABASE archiweb_db;\""\n\ su - postgres -c "psql -c \"SELECT 1 FROM pg_database WHERE datname = '\''archiweb_db'\''\" | grep -q 1 || psql -c \"CREATE DATABASE archiweb_db;\""\n\
su - postgres -c "psql -c \"SELECT 1 FROM pg_roles WHERE rolname = '\''archiweb_user'\''\" | grep -q 1 || psql -c \"CREATE USER archiweb_user WITH PASSWORD '\''archiweb_password'\'';\""\n\ su - postgres -c "psql -c \"SELECT 1 FROM pg_roles WHERE rolname = '\''archiweb_user'\''\" | grep -q 1 || psql -c \"CREATE USER archiweb_user WITH ENCRYPTED PASSWORD '\''archiweb_pass'\'';\""\n\
su - postgres -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE archiweb_db TO archiweb_user;\""\n\ su - postgres -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE archiweb_db TO archiweb_user;\""\n\
su - postgres -c "psql -d archiweb_db -c \"GRANT ALL ON SCHEMA public TO archiweb_user;\""\n\ su - postgres -c "psql -d archiweb_db -c \"GRANT ALL ON SCHEMA public TO archiweb_user;\""\n\
\n\ \n\

View File

@ -4,8 +4,9 @@ user=root
logfile=/var/log/supervisor/supervisord.log logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid pidfile=/var/run/supervisord.pid
# 1. PostgreSQL - PRIORITÉ 1 (démarre en premier)
[program:postgresql] [program:postgresql]
command=/usr/lib/postgresql/13/bin/postgres -D /var/lib/postgresql/13/main command=/usr/lib/postgresql/18/bin/postgres -D /var/lib/postgresql/18/main
user=postgres user=postgres
autostart=true autostart=true
autorestart=true autorestart=true
@ -15,60 +16,66 @@ stderr_logfile=/var/log/postgresql/postgresql-error.log
startsecs=5 startsecs=5
stopwaitsecs=30 stopwaitsecs=30
# 2. Init Database - PRIORITÉ 5 (après PostgreSQL)
[program:init-database] [program:init-database]
command=/usr/local/bin/init-database.sh command=/usr/local/bin/init-database.sh
autostart=true autostart=true
autorestart=false autorestart=false
startsecs=0
priority=5 priority=5
stdout_logfile=/var/log/postgresql/init-database.log stdout_logfile=/var/log/postgresql/init-database.log
stderr_logfile=/var/log/postgresql/init-database-error.log stderr_logfile=/var/log/postgresql/init-database-error.log
startsecs=0
# 4. Tomcat - PRIORITÉ 15 (après init-database + délai)
[program:tomcat]
command=/bin/bash -c 'sleep 20 && /opt/tomcat/bin/catalina.sh run'
autostart=true
autorestart=true
priority=15
stdout_logfile=/opt/tomcat/logs/catalina.out
stderr_logfile=/opt/tomcat/logs/catalina.out
environment=JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64",CATALINA_HOME="/opt/tomcat"
startsecs=35
stopwaitsecs=30
# 3. Apache - PRIORITÉ 10
[program:apache2] [program:apache2]
command=/usr/sbin/apache2ctl -D FOREGROUND command=/usr/sbin/apache2ctl -D FOREGROUND
autostart=true autostart=true
autorestart=true autorestart=true
priority=10
stdout_logfile=/var/log/apache2/access.log stdout_logfile=/var/log/apache2/access.log
stderr_logfile=/var/log/apache2/error.log stderr_logfile=/var/log/apache2/error.log
priority=10
startsecs=5 startsecs=5
[program:tomcat] # 5. Node Exporter - PRIORITÉ 20
command=/bin/bash -c 'sleep 20 && /opt/tomcat/bin/catalina.sh run'
environment=JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64",CATALINA_HOME="/opt/tomcat"
autostart=true
autorestart=true
stdout_logfile=/opt/tomcat/logs/catalina.out
stderr_logfile=/opt/tomcat/logs/catalina.out
priority=15
startsecs=35
stopwaitsecs=30
[program:node_exporter] [program:node_exporter]
command=/usr/local/bin/node_exporter command=/usr/local/bin/node_exporter
autostart=true autostart=true
autorestart=true autorestart=true
priority=20
stdout_logfile=/dev/stdout stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0 stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0 stderr_logfile_maxbytes=0
priority=20
startsecs=5 startsecs=5
# 6. Apache Exporter - PRIORITÉ 20
[program:apache_exporter] [program:apache_exporter]
command=/usr/local/bin/apache_exporter --scrape_uri=http://localhost/server-status?auto command=/usr/local/bin/apache_exporter --scrape_uri=http://localhost/server-status?auto
autostart=true autostart=true
autorestart=true autorestart=true
priority=20
stdout_logfile=/var/log/apache_exporter.log stdout_logfile=/var/log/apache_exporter.log
stderr_logfile=/var/log/apache_exporter_error.log stderr_logfile=/var/log/apache_exporter_error.log
priority=20
startsecs=5 startsecs=5
# 7. Promtail - PRIORITÉ 25
[program:promtail] [program:promtail]
command=/usr/local/bin/promtail -config.file=/etc/promtail/config.yaml command=/usr/local/bin/promtail -config.file=/etc/promtail/config.yaml
autostart=true autostart=true
autorestart=true autorestart=true
priority=25
stdout_logfile=/var/log/promtail/promtail.log stdout_logfile=/var/log/promtail/promtail.log
stderr_logfile=/var/log/promtail/promtail_error.log stderr_logfile=/var/log/promtail/promtail_error.log
priority=25
startsecs=5 startsecs=5