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

USER root

# Install and configure apache and php packages
RUN apt-get update && apt-get install -y --no-install-recommends \
    apache2 \
    curl \
    git \
    unzip \
    zip \
    && apt-get clean \
    && rm -rf /etc/apache2/apache2.conf \
    && rm -rf /var/www/html/index.html \
    && rm -rf /var/lib/apt/lists/*

# Install the DataDog PHP tracer
RUN curl -LO https://github.com/DataDog/dd-trace-php/releases/download/1.14.0/datadog-php-tracer_1.14.0_amd64.deb \
    && echo "5846c8fbbd09c8f149ef867d962453affc727022e7bcd007cb7b99e7d93c6951 datadog-php-tracer_1.14.0_amd64.deb" | sha256sum -c - \
    && dpkg -i datadog-php-tracer_1.14.0_amd64.deb \
    && rm datadog-php-tracer_1.14.0_amd64.deb

# Set Datadog params
ENV DD_TRACE_ANALYTICS_ENABLED=true
ENV DD_TRACE_APP_NAME=dev-bulkupload
ENV DD_TRACE_DEBUG=false
ENV DD_TRACE_GLOBAL_TAGS=env:dev-bulkupload

# Set the default environment
ENV APPLICATION_ENV=development
ENV Environment=dev

# Set and prepare the app directory
ENV APP_HOME=/var/www/html
RUN chown root:www-data ${APP_HOME}

WORKDIR $APP_HOME

# Copy the app into the image
COPY --chown=root:www-data src $APP_HOME/src
COPY --chown=root:www-data healthchk.php htmlupload.php $APP_HOME/

FROM base AS composer_update

# Re-generate composer.lock
COPY --chown=worker composer.json deploy/update_composer_lock.sh $APP_HOME/
ENTRYPOINT ["/var/www/html/update_composer_lock.sh"]

# prod application
FROM base AS deploy

# Install app and dependencies
COPY --chown=root:www-data composer.json composer.lock $APP_HOME/
RUN --mount=type=secret,id=github_auth,required,target=$APP_HOME/auth.json,uid=1010,gid=1010,mode=0400 \
    composer install --no-dev \
    && composer dump-autoload --optimize

COPY deploy/entry_point.sh /usr/local/bin/entry_point.sh
COPY deploy/apache2.conf /etc/apache2/apache2.conf

STOPSIGNAL SIGWINCH

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

# dev application
FROM base AS tests

RUN apt-get -y update \
    && apt-get -y install \
    ant \
    php8.4-xdebug \
    && apt-get -y clean \
    && rm -rf /var/lib/apt/lists/*

COPY --chown=worker composer.json composer.lock $APP_HOME/
RUN --mount=type=secret,id=github_auth,required,target=$APP_HOME/auth.json,uid=1010,gid=1010,mode=0400 \
    composer install \
    && composer dump-autoload --optimize

COPY --chown=root:www-data build/build.xml $APP_HOME/build/
COPY --chown=root:www-data tests $APP_HOME/tests

# configure php unit 
RUN echo "xdebug.mode=coverage" >> /etc/php/8.4/cli/php.ini

# Set the default environment
ENV APPLICATION_ENV=testing
ENV Environment=testing

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

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