Kasir/Dockerfile
Baghaztra 37d48c8b15 [Update] Docker done
Potensi masalah: db tidak sehat
2025-10-14 10:48:34 +07:00

92 lines
2.0 KiB
Docker

# ========================================
# Stage 1: Build Frontend Assets (Vue.js)
# ========================================
FROM node:20-alpine as node_builder
WORKDIR /app
# Copy package files untuk caching layer
COPY package*.json ./
# Install dependencies
RUN npm ci --legacy-peer-deps
# Copy seluruh source code
COPY . .
# Build production assets
RUN npm run build
# ========================================
# Stage 2: Laravel Application
# ========================================
FROM php:8.3-fpm-alpine
# Install system dependencies dan PHP extensions
RUN apk update && apk add --no-cache \
git \
unzip \
libzip-dev \
libpng-dev \
oniguruma-dev \
libxml2-dev \
curl \
mysql-client \
autoconf \
g++ \
make \
&& docker-php-ext-install \
pdo_mysql \
zip \
gd \
mbstring \
exif \
pcntl \
bcmath \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& apk del autoconf g++ make \
&& rm -rf /var/cache/apk/* /tmp/*
# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# Set working directory
WORKDIR /var/www/html
# Copy composer files untuk caching layer
COPY composer.json composer.lock ./
# Install PHP dependencies
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist
# Copy application source code
COPY . .
# Copy hasil build Vue dari stage 1
COPY --from=node_builder /app/public/build /var/www/html/public/build
# Generate autoload files dengan optimasi
RUN composer dump-autoload --optimize --classmap-authoritative
# Create required directories dan set permissions
RUN mkdir -p \
storage/framework/cache \
storage/framework/sessions \
storage/framework/views \
storage/logs \
bootstrap/cache \
&& chown -R www-data:www-data \
/var/www/html/storage \
/var/www/html/bootstrap/cache \
&& chmod -R 775 \
/var/www/html/storage \
/var/www/html/bootstrap/cache
# Switch ke user non-root untuk keamanan
USER www-data
EXPOSE 9000
CMD ["php-fpm"]