############################################################################### # eCert MBIP — Docker Compose (Development — Windows 11 / Linux) # # Penggunaan: # docker compose up -d --build # # Aplikasi: http://localhost:8003 # DB (host): localhost:33060 (untuk TablePlus / HeidiSQL) ############################################################################### 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" depends_on: db: condition: service_healthy 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 # ── MySQL 8.0 ────────────────────────────────────────────────────────────── db: image: mysql:8.0 container_name: ecert_db restart: unless-stopped environment: MYSQL_DATABASE: ${DB_DATABASE:-ecert_mbip} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-secret} MYSQL_USER: ${DB_USERNAME:-ecert} MYSQL_PASSWORD: ${DB_PASSWORD:-secret} volumes: - dbdata:/var/lib/mysql ports: - "33060:3306" # port host 33060 → elak konflik dengan MySQL tempatan (3306) healthcheck: test: - CMD - mysqladmin - ping - -h - localhost - -u - root - --password=${DB_PASSWORD:-secret} interval: 5s timeout: 5s retries: 15 start_period: 20s 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 # Override entrypoint: langkau migrate/seed (app container dah buat) entrypoint: [] command: - php - artisan - queue:work - --sleep=3 - --tries=3 - --max-time=3600 - --timeout=90 depends_on: db: condition: service_healthy app: condition: service_started networks: - ecert ############################################################################### networks: ecert: driver: bridge volumes: dbdata: driver: local