x-app: &default-app
  volumes:
    - "${DOCKER_WEB_VOLUME:-./web:/app/web}"
  env_file:
    - .env
  restart: "${DOCKER_RESTART_POLICY:-unless-stopped}"
  networks:
    - default
  deploy:
    resources:
      limits:
        cpus: "${DOCKER_MYSQL_CPUS:-0}"
        memory: "${DOCKER_MYSQL_MEMORY:-0}"
  labels:
    - "traefik.enabled=false"
  tty: true

services:
  web:
    <<: *default-app
    build:
      context: .
      target: web
    depends_on:
      - php
    networks:
      - default
      - web
    labels:
      - "traefik.docker.network=traefik_proxy"
      - "traefik.http.routers.${COMPOSE_PROJECT_NAME}.rule=Host(`${COMPOSE_PROJECT_NAME}.localhost`)"
    profiles: [web]

  php:
    <<: *default-app
    build:
      context: .
      target: {{ dockerCompose.services.php.build.target }}
    depends_on:
      - database
    profiles: [php]

  database:
    image: mariadb:10
    deploy:
      resources:
        limits:
          cpus: "${DOCKER_MYSQL_CPUS:-0}"
          memory: "${DOCKER_MYSQL_MEMORY:-0}"
    volumes:
      - db-data:/var/lib/mysql
    env_file:
      - .env
    labels:
      - "traefik.enabled=false"
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: true
    profiles: [database]

volumes:
  db-data: {}

networks:
  web:
    name: traefik_proxy