# syntax=docker/dockerfile:1
# Image Roundcube (php-fpm) + skin Elastic recompilé avec les surcharges de theme/
#
# Le skin Elastic est livré compilé (styles.min.css). Ses points d'extension
# _variables.less / _styles.less ne sont pris en compte qu'à la compilation LESS :
# on recompile donc ici, dans un étage Node jetable, puis on recopie le skin
# dans /usr/src/roundcubemail (source que l'entrypoint synchronise vers /var/www/html).

ARG RC_VERSION=1.7.4

FROM roundcube/roundcubemail:${RC_VERSION}-fpm-alpine AS upstream

# --- Étage 1 : compilation LESS du skin Elastic ---
FROM node:22-alpine AS theme
ARG LESS_VERSION=4.9.1
ARG LESS_CLEANCSS_VERSION=1.6.0
# Secret optionnel "ca" : CA d'un proxy TLS d'entreprise (docker build --secret id=ca,src=ca.pem)
RUN --mount=type=secret,id=ca,required=false \
    NODE_EXTRA_CA_CERTS=/run/secrets/ca npm install -g --no-fund --no-audit \
      less@${LESS_VERSION} less-plugin-clean-css@${LESS_CLEANCSS_VERSION}

COPY --from=upstream /usr/src/roundcubemail/skins/elastic /build/elastic
COPY theme/ /build/theme/

WORKDIR /build/elastic
# Surcharges optionnelles : un theme/ vide redonne l'Elastic d'origine
RUN set -eu; \
    for f in _variables.less _styles.less; do \
      if [ -f /build/theme/$f ]; then cp /build/theme/$f styles/; echo "surcharge: $f"; fi; \
    done; \
    if [ -d /build/theme/fonts ];  then cp -r /build/theme/fonts/.  fonts/;  fi; \
    if [ -d /build/theme/images ]; then cp -r /build/theme/images/. images/; fi; \
    for css in styles print embed; do \
      lessc --clean-css="--s1 --advanced" styles/$css.less > styles/$css.min.css; \
    done; \
    ls -l styles/*.min.css

# --- Étage 2 : image finale ---
FROM upstream
ARG ASPELL_DICTS="fr en"
# Dictionnaires installés au build (plutôt qu'à chaque démarrage via ROUNDCUBEMAIL_ASPELL_DICTS)
# mailcap fournit /etc/mime.types, utilisé par Roundcube pour le mapping type MIME <-> extension
RUN --mount=type=secret,id=ca,required=false \
    set -eu; \
    if [ -s /run/secrets/ca ]; then export SSL_CERT_FILE=/run/secrets/ca; fi; \
    pkgs="mailcap"; \
    for d in $(echo "$ASPELL_DICTS" | tr ',' ' '); do pkgs="$pkgs aspell-$d"; done; \
    apk add --no-cache $pkgs
COPY --from=theme /build/elastic/ /usr/src/roundcubemail/skins/elastic/

# Healthcheck php-fpm : réponse au ping FastCGI via le pool
COPY roundcube/zz-healthcheck.conf /usr/local/etc/php-fpm.d/zz-healthcheck.conf
