Files
eCert-MBIP/docker-compose.yml
Saufi 69c91dfb4b feat: guna MySQL external — host.docker.internal (dev) & 172.17.200.16 (prod)
- Buang service db dan volume dbdata dari compose files
- dev: extra_hosts host.docker.internal:host-gateway → capai MySQL Windows host
- prod: IP terus 172.17.200.16, tiada extra_hosts diperlukan
- .env.docker: DB_HOST=host.docker.internal dengan nota untuk production
- entrypoint.sh: default DB_HOST → host.docker.internal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 16:34:17 +08:00

90 lines
2.7 KiB
YAML

###############################################################################
# eCert MBIP — Docker Compose (Development — Windows 11)
#
# Penggunaan:
# docker compose up -d --build
#
# Aplikasi: http://localhost:8003
# DB : host.docker.internal:3306 (MySQL pada Windows host)
#
# NOTA: Dari dalam container, MySQL pada Windows tidak boleh guna "localhost".
# Kena guna host.docker.internal (disediakan oleh Docker Desktop).
# Dalam .env: DB_HOST=host.docker.internal
###############################################################################
name: ecert
services:
# ── PHP-FPM Application ────────────────────────────────────────────────────
app:
build:
context: .
dockerfile: docker/php/Dockerfile
container_name: ecert_app
restart: unless-stopped
working_dir: /var/www
volumes:
- .:/var/www
- ./docker/php/php.ini:/usr/local/etc/php/conf.d/99-ecert.ini:ro
- ./docker/php/php-dev.ini:/usr/local/etc/php/conf.d/99-ecert-dev.ini:ro
env_file:
- .env
environment:
APP_ENV: local
APP_DEBUG: "true"
extra_hosts:
- "host.docker.internal:host-gateway" # pastikan resolusi host pada Linux juga
networks:
- ecert
# ── Nginx Web Server ───────────────────────────────────────────────────────
nginx:
image: nginx:1.27-alpine
container_name: ecert_nginx
restart: unless-stopped
ports:
- "8003:80"
volumes:
- .:/var/www:ro
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- app
networks:
- ecert
# ── Queue Worker ───────────────────────────────────────────────────────────
queue:
build:
context: .
dockerfile: docker/php/Dockerfile
container_name: ecert_queue
restart: unless-stopped
working_dir: /var/www
volumes:
- .:/var/www
- ./docker/php/php.ini:/usr/local/etc/php/conf.d/99-ecert.ini:ro
env_file:
- .env
environment:
APP_ENV: local
extra_hosts:
- "host.docker.internal:host-gateway"
entrypoint: []
command:
- php
- artisan
- queue:work
- --sleep=3
- --tries=3
- --max-time=3600
- --timeout=90
depends_on:
- app
networks:
- ecert
###############################################################################
networks:
ecert:
driver: bridge