Site personnel courcellematthi.eu
This commit is contained in:
+79
@@ -0,0 +1,79 @@
|
||||
# =============================================================================
|
||||
# Dockerfile — Site statique courcellematthi.eu
|
||||
# -----------------------------------------------------------------------------
|
||||
# Image mono-étape : le site n'a aucune dépendance et aucune compilation.
|
||||
# Une étape de build (Node, npm install…) n'apporterait ici que du temps
|
||||
# de déploiement et de la surface d'attaque en plus.
|
||||
#
|
||||
# Image finale : environ 50 Mo, dont 48 Mo pour Nginx Alpine.
|
||||
# =============================================================================
|
||||
|
||||
# Version épinglée plutôt que « latest » : un redéploiement six mois plus tard
|
||||
# doit produire exactement la même image. « latest » rend les builds
|
||||
# non reproductibles et peut casser la production sans qu'on ait rien changé.
|
||||
FROM nginx:1.27-alpine
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# MÉTADONNÉES (spécification OCI)
|
||||
# Visibles via « docker inspect », utiles pour l'inventaire et le débogage.
|
||||
# -----------------------------------------------------------------------------
|
||||
LABEL org.opencontainers.image.title="courcellematthi.eu"
|
||||
LABEL org.opencontainers.image.description="Site personnel et CV de Matthieu Courcelle"
|
||||
LABEL org.opencontainers.image.authors="Matthieu Courcelle <m@tthieu.be>"
|
||||
LABEL org.opencontainers.image.url="https://www.courcellematthi.eu"
|
||||
LABEL org.opencontainers.image.licenses="UNLICENSED"
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# CONFIGURATION NGINX
|
||||
# On remplace le fichier par défaut du site, pas nginx.conf global : la
|
||||
# configuration de base de l'image (workers, types MIME, limites) est saine.
|
||||
# -----------------------------------------------------------------------------
|
||||
RUN rm /etc/nginx/conf.d/default.conf
|
||||
COPY deploy/nginx.conf /etc/nginx/conf.d/site.conf
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# CONTENU DU SITE
|
||||
# .dockerignore exclut le superflu (README, configs alternatives, .git).
|
||||
# -----------------------------------------------------------------------------
|
||||
COPY . /usr/share/nginx/html/
|
||||
|
||||
# Retire du conteneur les fichiers qui n'ont rien à y faire : documentation,
|
||||
# configurations serveur alternatives, sources de déploiement. Ils sont utiles
|
||||
# dans le dépôt, pas dans l'image servie au public.
|
||||
RUN rm -rf /usr/share/nginx/html/deploy \
|
||||
/usr/share/nginx/html/Dockerfile \
|
||||
/usr/share/nginx/html/.dockerignore \
|
||||
/usr/share/nginx/html/docker-compose.yaml \
|
||||
/usr/share/nginx/html/README.md \
|
||||
/usr/share/nginx/html/DEPLOIEMENT-COOLIFY.md \
|
||||
/usr/share/nginx/html/nginx.conf.example \
|
||||
/usr/share/nginx/html/.htaccess \
|
||||
/usr/share/nginx/html/verifier-depot.sh
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# PERMISSIONS
|
||||
# Lecture seule pour tous, aucun fichier exécutable : rien dans un site
|
||||
# statique n'a besoin du bit d'exécution, sauf les répertoires (parcours).
|
||||
# -----------------------------------------------------------------------------
|
||||
RUN chmod -R a=r,u+w /usr/share/nginx/html && \
|
||||
find /usr/share/nginx/html -type d -exec chmod a+x {} \;
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# RÉSEAU
|
||||
# EXPOSE est purement déclaratif : il documente le port et permet à Coolify
|
||||
# de le détecter automatiquement. Il n'ouvre rien par lui-même.
|
||||
# -----------------------------------------------------------------------------
|
||||
EXPOSE 80
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# SONDE DE SANTÉ
|
||||
# Coolify affiche l'état du conteneur et peut le redémarrer s'il ne répond
|
||||
# plus. wget est présent dans l'image Alpine, inutile d'installer curl.
|
||||
# -----------------------------------------------------------------------------
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD wget --quiet --tries=1 --spider http://localhost/healthz || exit 1
|
||||
|
||||
# L'image officielle définit déjà le bon CMD ; on le réécrit pour rendre
|
||||
# explicite le fonctionnement au premier plan (daemon off), indispensable
|
||||
# pour que Docker suive correctement le cycle de vie du processus.
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
Reference in New Issue
Block a user