35 lines
948 B
Docker
35 lines
948 B
Docker
# Stage 1: Build Vue (tetap sama)
|
|
FROM node:20 as node_builder
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm install
|
|
COPY . .
|
|
RUN npm run build
|
|
|
|
# Stage 2: Laravel
|
|
FROM php:8.3-fpm
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
git unzip libzip-dev libpng-dev libonig-dev libxml2-dev curl \
|
|
&& docker-php-ext-install pdo_mysql zip gd mbstring exif pcntl bcmath \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/* # Cleanup untuk ukuran kecil
|
|
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
WORKDIR /var/www/html
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
# Copy hasil build Vue
|
|
COPY --from=node_builder /app/dist /var/www/html/public
|
|
|
|
RUN composer install --no-dev --optimize-autoloader
|
|
RUN php artisan config:cache && php artisan route:cache && php artisan view:cache # Optimasi cache untuk performa laporan/transaksi
|
|
|
|
# Set permission dan user non-root
|
|
RUN chown -R www-data:www-data /var/www/html
|
|
USER www-data
|
|
|
|
EXPOSE 9000
|
|
CMD ["php-fpm"]
|