57 lines
1.3 KiB
Docker
57 lines
1.3 KiB
Docker
FROM node:18 AS node-base
|
|
|
|
# Development stage
|
|
FROM node-base AS development
|
|
WORKDIR /var/www
|
|
COPY package*.json ./
|
|
RUN npm install
|
|
COPY . .
|
|
EXPOSE 5173
|
|
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]
|
|
|
|
# Production stage
|
|
FROM php:8.2-fpm AS production
|
|
WORKDIR /var/www
|
|
|
|
# Install PHP extensions
|
|
RUN apt-get update && apt-get install -y \
|
|
git curl zip unzip libpng-dev libonig-dev libxml2-dev libzip-dev \
|
|
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip
|
|
|
|
# Install Node.js
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
|
|
&& apt-get install -y nodejs
|
|
|
|
# Install Composer
|
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
|
|
|
# Copy application files
|
|
COPY . .
|
|
|
|
# Install dependencies
|
|
RUN composer install --no-dev --optimize-autoloader
|
|
|
|
# Install and build frontend assets
|
|
RUN npm install \
|
|
&& npm run build \
|
|
&& ls -la public/build \
|
|
&& mkdir -p public/assets \
|
|
&& cp -r public/build/* public/assets/ \
|
|
&& ls -la public/assets \
|
|
&& rm -rf node_modules \
|
|
&& rm -rf public/build
|
|
|
|
# Laravel caches
|
|
RUN php artisan config:clear \
|
|
&& php artisan route:clear \
|
|
&& php artisan view:clear \
|
|
&& php artisan optimize
|
|
|
|
RUN php artisan storage:link
|
|
|
|
# Permissions
|
|
RUN chown -R www-data:www-data /var/www && chmod -R 755 /var/www/storage /var/www/public
|
|
|
|
EXPOSE 9000
|
|
CMD ["php-fpm"]
|