[feat] Docker (belum jalan v:)

This commit is contained in:
Baghaztra 2025-09-12 10:11:47 +07:00
parent 3e96a158e5
commit e1205cf146
3 changed files with 75 additions and 0 deletions

7
.dockerignore Normal file
View File

@ -0,0 +1,7 @@
node_modules
vendor
.env
Dockerfile
docker-compose.yml
.git
.gitignore

29
Dockerfile Normal file
View File

@ -0,0 +1,29 @@
# Stage 1: Build Vue
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
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
# Copy source code KECUALI public (biar ga ketiban build Vue)
COPY . .
# Copy hasil build Vue dari stage 1
COPY --from=node_builder /app/dist /var/www/html/public
RUN composer install --no-dev --optimize-autoloader
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache
EXPOSE 9000
CMD ["php-fpm"]

39
docker-compose.yml Normal file
View File

@ -0,0 +1,39 @@
services:
laravel:
build:
context: .
dockerfile: Dockerfile
container_name: laravel_app
volumes:
- .:/var/www/html
command: php artisan serve --host=0.0.0.0 --port=8000
ports:
- "8000:8000"
depends_on:
- mysql
environment:
APP_ENV: local
APP_KEY: ${APP_KEY}
DB_CONNECTION: mysql
DB_HOST: mysql
DB_PORT: 3306
DB_DATABASE: ${DB_DATABASE}
DB_USERNAME: ${DB_USERNAME}
DB_PASSWORD: ${DB_PASSWORD}
mysql:
image: mysql:8
container_name: mysql_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: laravel
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data: