FROM        086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:debian13-php84 AS base

USER        root

RUN         apt-get update && \
            apt-get -y upgrade && \
            apt-get -y install curl git apache2 unzip zip && \
            apt-get clean all &&  \
            rm -rf /var/lib/apt/lists/*

# Set and prepare the app directory
ENV         APP_HOME=/var/www/html
RUN         chown -R worker $APP_HOME

USER        worker

# Copy the app into the image
COPY        composer.json composer.lock $APP_HOME/

WORKDIR     $APP_HOME

RUN         mkdir ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts

FROM        base AS app

# Install app and dependencies
RUN         --mount=type=secret,id=COMPOSER_AUTH,required=true,uid=1010 COMPOSER_AUTH=$(cat /run/secrets/COMPOSER_AUTH) composer install --no-dev --no-autoloader

COPY        config $APP_HOME/config
COPY        metadata $APP_HOME/metadata
COPY        src $APP_HOME/src
COPY        healthchk.php $APP_HOME/

RUN         composer dump-autoload --optimize

USER        root

# remove git and Install the DataDog PHP tracer
RUN         apt-get -y remove --purge git && \
            apt-get -y autoremove && \
            curl -LO https://github.com/DataDog/dd-trace-php/releases/download/1.21.0/datadog-php-tracer_1.21.0_amd64.deb && \
            dpkg -i datadog-php-tracer_1.21.0_amd64.deb && \
            rm datadog-php-tracer_1.21.0_amd64.deb

RUN         chgrp -R www-data $APP_HOME

# Remove old and add new apache configs
RUN         rm -rf /etc/apache2/apache2.conf
COPY        deploy/apache2.conf /etc/apache2/apache2.conf

STOPSIGNAL  SIGWINCH
EXPOSE      80

COPY        deploy/entry_point.sh /usr/local/bin/entry_point.sh

ENTRYPOINT  ["/usr/local/bin/entry_point.sh"]

FROM        base AS unit-lint

USER        root

RUN         apt-get update && \
            apt-get -y install ant yamllint php8.4-xdebug && \
            apt-get clean all

RUN         --mount=type=secret,id=COMPOSER_AUTH,required=true,uid=1010 COMPOSER_AUTH=$(cat /run/secrets/COMPOSER_AUTH) composer install

COPY        build/bin/unit-lint.sh $APP_HOME/build/bin/
COPY        build/build.xml docker-compose.yml $APP_HOME/
COPY        build/phpstan.neon.dist build/.php-cs-fixer.dist.php $APP_HOME/build/
COPY        config $APP_HOME/config
COPY        metadata $APP_HOME/metadata
COPY        src $APP_HOME/src
COPY        tests $APP_HOME/tests

ENTRYPOINT  [ "/var/www/html/build/bin/unit-lint.sh" ]

FROM        base AS format

USER        root

RUN         apt-get update && \
            apt-get -y install ant && \
            apt-get clean all

RUN         --mount=type=secret,id=COMPOSER_AUTH,required=true,uid=1010 COMPOSER_AUTH=$(cat /run/secrets/COMPOSER_AUTH) composer install

COPY        build/bin/format.sh $APP_HOME/build/bin/
COPY        build/build.xml $APP_HOME/
COPY        build/.php-cs-fixer.dist.php $APP_HOME/build/
COPY        config $APP_HOME/config
COPY        metadata $APP_HOME/metadata
COPY        src $APP_HOME/src
COPY        tests $APP_HOME/tests

ENTRYPOINT  [ "/var/www/html/build/bin/format.sh" ]

FROM        base AS update-lockfile

# Re-generate composer.lock
COPY        build/bin/update-lockfile.sh $APP_HOME/build/bin/
COPY        src $APP_HOME/src
COPY        tests $APP_HOME/tests

ENTRYPOINT  ["/var/www/html/build/bin/update-lockfile.sh"]
