47 lines
999 B
Docker
47 lines
999 B
Docker
FROM php:8.4-fpm
|
|
|
|
# Set working dir
|
|
WORKDIR /var/www/html
|
|
|
|
# Install system deps
|
|
RUN apt-get update && apt-get install -y \
|
|
git curl libpng-dev libonig-dev libxml2-dev zip unzip \
|
|
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
|
|
|
|
# Install Composer
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
# Copy app code
|
|
COPY . .
|
|
|
|
# Install PHP deps (no dev)
|
|
RUN composer install --no-dev --optimize-autoloader --no-interaction
|
|
|
|
# Node build (optional if you need assets)
|
|
FROM node:20 AS frontend
|
|
WORKDIR /app
|
|
|
|
# Copy Node dependencies and install
|
|
COPY package*.json ./
|
|
RUN npm ci
|
|
|
|
# Copy app code
|
|
COPY . .
|
|
|
|
# Copy vendor from composer stage
|
|
COPY --from=0 /var/www/html/vendor ./vendor
|
|
|
|
# Build assets
|
|
RUN npm run build
|
|
|
|
# Copy built assets into PHP image
|
|
FROM php:8.4-fpm
|
|
WORKDIR /var/www/html
|
|
COPY --from=0 /var/www/html .
|
|
COPY --from=frontend /app/public ./public
|
|
|
|
# Fix permissions for Laravel
|
|
RUN chown -R www-data:www-data storage bootstrap/cache
|
|
|
|
CMD ["php-fpm"]
|