# Image de TEST admin (patron PHP+MySQL). CLI seul : lance `php artisan test`.
# Hermetique : deps installees dans l'image (repo prive wellpack/sdk via SSH forward).
FROM php:8.4-cli AS test

# install-php-extensions (convention platform) + outils composer/SSH.
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions \
 && install-php-extensions pdo_mysql gd zip bcmath intl exif mbstring \
 && apt-get update \
 && apt-get install -y --no-install-recommends git openssh-client unzip \
 && rm -rf /var/lib/apt/lists/*

COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app

# Deps DANS l'image. wellpack/sdk = repo prive (VCS SSH) -> forward de l'agent SSH
# au build (--mount=type=ssh), aucun secret bake. --no-scripts : evite
# package:discover (booterait AppServiceProvider -> DB) au build ; le manifest
# packages est regenere au 1er boot runtime par Laravel.
# --prefer-source : clone les paquets via git+SSH. Indispensable pour le repo
# prive wellpack/sdk : en --prefer-dist composer passe par l'API GitHub
# (api.github.com/.../zipball) qui exige un token OAuth -> 404 sur un repo prive.
# Le forward SSH ne sert qu'a git ; source force donc le clone SSH (aucun token).
COPY composer.json composer.lock ./
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts 2>/dev/null || true
RUN --mount=type=ssh composer install --no-interaction --no-progress --prefer-source --no-scripts

# Reste du code (vendor est exclu par .dockerignore, l'install ci-dessus prime).
COPY . .

# L'autoload PSR-4 non-optimise peut resoudre App\ vers le squelette dev d'un
# package (ex. laravel/pint sous --prefer-source) au lieu du code racine.
# dump-autoload --optimize construit le classmap ou le package RACINE gagne
# l'ambiguite -> le vrai AppServiceProvider::boot() (rate limiters, etc.) s'execute.
RUN composer dump-autoload --optimize --no-scripts

COPY docker/test/entrypoint.sh /usr/local/bin/test-entrypoint.sh
RUN chmod +x /usr/local/bin/test-entrypoint.sh
ENTRYPOINT ["/usr/local/bin/test-entrypoint.sh"]
