Files

32 lines
1.4 KiB
Docker
Raw Permalink Normal View History

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