Files
cabutan-bertuah-koipb/docker-compose.prod.yml
2026-06-24 20:35:01 +08:00

52 lines
1.9 KiB
YAML

###############################################################################
# KOIPB MAT — Docker Compose Production Override (Ubuntu Server)
#
# Penggunaan:
# docker compose --env-file .env.docker \
# -f docker-compose.yml -f docker-compose.prod.yml up -d --build
#
# Perbezaan dari dev:
# • APP_ENV=production, APP_DEBUG=false → config/route/view cache
# • restart: always
# • php-dev.ini diganti dgn php-prod.ini (opcache.validate_timestamps=0)
# • Nginx dengar pada port 80
# • MySQL TIDAK dedah port ke host (akses dalaman sahaja)
###############################################################################
name: koipb
services:
mysql:
restart: always
ports: [] # jangan dedah MySQL ke host pada production
app:
restart: always
environment:
APP_ENV: production
APP_DEBUG: "false"
DB_HOST: mysql
DB_PORT: "3306"
volumes:
- ./:/var/www/html
- ./.env.docker:/var/www/html/.env
- ./docker/php/php.ini:/usr/local/etc/php/conf.d/99-koipb.ini:ro
- ./docker/php/php-prod.ini:/usr/local/etc/php/conf.d/99-koipb-prod.ini:ro
nginx:
restart: always
# Ikat ke loopback sahaja — host nginx (reverse-proxy) yang dedah domain awam.
# Port unik supaya tidak berlanggar dgn projek lain (spr2026=8007, taklimat=8008).
ports:
- "127.0.0.1:${APP_PORT:-8009}:80"
# ── Node (opsional) ────────────────────────────────────────────────────────
# UI guna CDN + CSS statik (public/css/koipb.css) — TIADA langkah build Vite.
# Service ini hanya jika anda menambah aset yang perlu di-compile.
# node-build:
# image: node:lts-alpine
# working_dir: /app
# volumes: [ ./:/app ]
# command: sh -c "npm ci && npm run build"
# profiles: [ build ]