FROM php:8.3-cli-alpine AS builder

RUN apk add --no-cache \
    autoconf \
    dpkg-dev dpkg \
    g++ \
    gcc \
    libc-dev \
    make \
    pkgconf \
    re2c \
    linux-headers \
    libzip-dev \
    postgresql-dev \
    libpng-dev \
    libjpeg-turbo-dev \
    freetype-dev \
    oniguruma-dev \
    git \
    bash \
    curl \
    unzip

RUN docker-php-ext-configure gd --with-freetype --with-jpeg

RUN docker-php-ext-install -j$(nproc) \
    pdo \
    pdo_pgsql \
    pgsql \
    zip \
    bcmath \
    gd \
    sockets \
    pcntl

RUN curl -sS https://getcomposer.org/installer | php -- \
    --install-dir=/usr/local/bin \
    --filename=composer

WORKDIR /app

COPY composer.json composer.lock ./

RUN composer install --no-dev --no-autoloader --no-scripts

COPY . .

RUN composer dump-autoload --optimize

FROM php:8.3-cli-alpine

RUN apk add --no-cache \
    libzip \
    postgresql-libs \
    libpng \
    libjpeg-turbo \
    freetype \
    oniguruma \
    git \
    bash \
    curl

COPY --from=builder /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /app /var/www

WORKDIR /var/www

RUN chown -R www-data:www-data storage bootstrap/cache \
    && chmod -R 775 storage bootstrap/cache

RUN curl -sSLO https://github.com/roadrunner-server/roadrunner/releases/download/v2023.3.8/roadrunner-2023.3.8-linux-amd64.tar.gz \
    && tar -xzf roadrunner-*.tar.gz \
    && mv roadrunner-2023.3.8-linux-amd64/rr /usr/local/bin \
    && rm -rf roadrunner-*

RUN php artisan config:cache \
    && php artisan route:cache \
    && php artisan view:cache

CMD ["rr", "serve", "-c", ".rr.yaml"]
