# Docker Compose — PHP app + MySQL
# Secrets and ports come from .env (copy from .env.example first)
# MySQL starts empty (root only). Create DB/user/tables via SQLyog — see SETUP_DATABASE.md

services:
  app:
    build: .
    image: docker-task-php
    container_name: docker-task-app
    ports:
      - "${APP_PORT:-8080}:80"
    env_file:
      - .env
    environment:
      DB_HOST: ${DB_HOST:-db}
      DB_NAME: ${DB_NAME:-userdb}
      DB_USER: ${DB_USER:-appuser}
      DB_PASS: ${DB_PASS:-apppass}
    volumes:
      # Named volume (not a Windows host bind) — same idea as manual docker volume create
      - docker-task-uploads:/var/www/html/uploads
    depends_on:
      - db
    networks:
      - docker-task-net

  db:
    image: mysql:8.0
    container_name: docker-task-db
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpass}
    volumes:
      - docker-task-mysql:/var/lib/mysql
    ports:
      - "${DB_PORT:-3306}:3306"
    networks:
      docker-task-net:
        aliases:
          - db

networks:
  docker-task-net:
    name: docker-task-net
    driver: bridge

volumes:
  docker-task-mysql:
    name: docker-task-mysql
  docker-task-uploads:
    name: docker-task-uploads
