Files
myocardial/docker-compose.yml
sulthan 04280c578c fix: build Vite assets in app container, harden docker deploy
App (PHP-FPM) container never got public/build/manifest.json, only
the nginx container built it — blade's @vite runs server-side in PHP
and threw "Vite manifest not found", causing 500 on every page.

Also:
- strip docker/ (incl. DB dump) from the shipped app image
- pin npm installs to package-lock.json via npm ci in both build stages
- fix .dockerignore case typo (Docker/Dockerfile -> docker/Dockerfile)
- pass AWS_* env vars to app service, required since FILESYSTEM_DISK=s3

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-18 13:31:03 +07:00

64 lines
1.5 KiB
YAML

services:
# ==========================================
# 1. Laravel Application (PHP-FPM)
# ==========================================
app:
build:
context: .
dockerfile: docker/Dockerfile
restart: unless-stopped
environment:
APP_NAME: ${APP_NAME:-Laravel}
APP_ENV: ${APP_ENV:-production}
APP_KEY: ${APP_KEY}
APP_DEBUG: ${APP_DEBUG:-false}
APP_URL: ${APP_URL}
DB_CONNECTION: mariadb
DB_HOST: db
DB_PORT: 3306
DB_DATABASE: ${DB_DATABASE}
DB_USERNAME: ${DB_USERNAME}
DB_PASSWORD: ${DB_PASSWORD}
FILESYSTEM_DISK: s3
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-us-east-1}
AWS_BUCKET: ${AWS_BUCKET}
depends_on:
- db
# ==========================================
# 2. Web Server (Custom Nginx)
# ==========================================
web:
build:
context: .
dockerfile: docker/nginx.Dockerfile
restart: unless-stopped
expose:
- "80"
depends_on:
- app
# ==========================================
# 3. Database (MariaDB)
# ==========================================
db:
build:
context: .
dockerfile: docker/mariadb.Dockerfile
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
volumes:
- db_data:/var/lib/mysql
volumes:
db_data: