# event-uploader API – Laravel. Same image used for api and queue (different command). FROM php:8.3-cli-alpine # PHP extensions for Laravel + MySQL + Google etc. RUN apk add --no-cache \ git \ unzip \ libzip-dev \ libpng-dev \ libxml2-dev \ oniguruma-dev \ && docker-php-ext-install -j$(nproc) \ pdo_mysql \ gd \ fileinfo \ mbstring \ xml \ zip \ pcntl \ bcmath # Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer ENV COMPOSER_ALLOW_SUPERUSER=1 WORKDIR /app # Dependencies first (better layer cache) COPY composer.json composer.lock ./ RUN composer install --no-dev --optimize-autoloader --no-interaction # Application COPY . . # .env and APP_KEY are provided at runtime via compose # Writable dirs (runtime will mount or use defaults) RUN mkdir -p storage/framework/cache storage/framework/sessions storage/framework/views storage/logs bootstrap/cache \ && chmod -R 775 storage bootstrap/cache EXPOSE 8000 CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]