Files
Sistem_Kehadiran_Taklimat_SPR/docker-compose.yml
2026-06-14 09:17:46 +08:00

66 lines
1.5 KiB
YAML

# Docker stack for "Kehadiran Taklimat SPR" (Laravel 13 / PHP 8.4)
#
# Topology:
# web (nginx) -> exposes 127.0.0.1:8080, host nginx reverse-proxies the
# domain http://taklimatspr.apps.mbip.my to it.
# app (fpm) -> PHP 8.4-FPM, runs migrations on boot.
# queue -> database queue worker.
# scheduler -> Laravel scheduler.
#
# Databases (sppm_taklimat + the existing sppm DB) live on the HOST MySQL and
# are reached via host.docker.internal (see extra_hosts below + DOCKER.md).
x-app-build: &app-build
context: .
dockerfile: docker/Dockerfile
target: app
x-app-common: &app-common
build: *app-build
image: taklimatspr-app:latest
restart: unless-stopped
env_file:
- .env.docker
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- app_storage:/var/www/html/storage
services:
app:
<<: *app-common
environment:
RUN_MIGRATIONS: "true"
web:
build:
context: .
dockerfile: docker/Dockerfile
target: web
image: taklimatspr-web:latest
restart: unless-stopped
depends_on:
- app
ports:
# Bind to loopback only; the host nginx terminates the public domain.
- "127.0.0.1:8008:80"
queue:
<<: *app-common
environment:
RUN_MIGRATIONS: "false"
command: php artisan queue:work --sleep=3 --tries=3 --max-time=3600
depends_on:
- app
scheduler:
<<: *app-common
environment:
RUN_MIGRATIONS: "false"
command: php artisan schedule:work
depends_on:
- app
volumes:
app_storage: