FROM nginx:stable-alpine # Limite envsubst aux seules variables explicitement utilisées dans le template, # pour préserver les variables Nginx natives ($remote_addr, $host, ...). ENV NGINX_ENVSUBST_FILTER='^(LISTEN_PORT|SERVER_NAME|UPSTREAM_HOST|MAINTENANCE_MODE)$' # Le snippet de log est statique et copié une fois pour toutes. COPY nginx/snippets/maintenance-log.conf /etc/nginx/snippets/maintenance-log.conf # Le template est traité par /docker-entrypoint.d/20-envsubst-on-templates.sh # fourni par l'image officielle, après notre hook 10-init.sh. COPY nginx/templates/default.conf.template /etc/nginx/templates/default.conf.template # Page de maintenance statique. COPY public/maintenance.html /usr/share/nginx/html/maintenance.html # Scripts utilitaires + hook d'initialisation. COPY scripts/build-ip-list.sh /usr/local/bin/build-ip-list.sh COPY scripts/entrypoint.sh /docker-entrypoint.d/10-init.sh RUN chmod +x /usr/local/bin/build-ip-list.sh /docker-entrypoint.d/10-init.sh # Crée le fichier maintenance.log à l'avance (sinon Nginx ne logge pas tant # que le fichier n'existe pas) et délègue les logs standards à stdout/stderr. RUN ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.log \ && touch /var/log/nginx/maintenance.log EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD wget -qO- "http://127.0.0.1:${LISTEN_PORT:-8080}/" >/dev/null 2>&1 || exit 1