FROM docker.io/alpine:3.21

# Install PHP 8.4 and common extensions from Alpine community repos
RUN apk add --no-cache \
    php84 \
    php84-fpm \
    php84-pdo_mysql \
    php84-mbstring \
    php84-exif \
    php84-pcntl \
    php84-bcmath \
    php84-gd \
    php84-zip \
    php84-intl \
    php84-curl \
    php84-tokenizer \
    php84-xml \
    php84-xmlwriter \
    php84-session \
    curl

# Create a symlink so 'php' command works
RUN ln -sf /usr/bin/php84 /usr/bin/php

# Set working directory early
WORKDIR /app

# Copy application files explicitly from the context
COPY . /app

# Get Composer
COPY --from=docker.io/composer:latest /usr/bin/composer /usr/bin/composer

# Laravel permission fix
RUN chmod -R 775 /app/storage /app/bootstrap/cache

EXPOSE 8000

CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]