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 WORKDIR /var/www # Get Composer COPY --from=docker.io/composer:latest /usr/bin/composer /usr/bin/composer # Copy only the application files # The .dockerignore will prevent it from touching restricted system folders COPY . /var/www # Laravel permission fix RUN chmod -R 775 /var/www/storage /var/www/bootstrap/cache EXPOSE 8000 CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]